Running the following code:
Code:
int run_execve ( int cid );
int so_far = 0;
int MAX_PROCS = 1000; /* create this many processes */
int main(void) {
int cid;
printf ( "C\n" );
while ( so_far < MAX_PROCS ) {
/* attempt to run an executable */
cid = fork();
run_execve ( cid );
printf ( "A\n" );
so_far++;
}
}
int run_execve ( int cid ) {
if ( cid == 0 ) {
exit ( -1 );
}
}
I would expect to see a single C in the output, and 1000 A's. Instead, I'm getting 72 C's and 3485 A's. This behavior makes no sense to me. Eventually, I plan to call execve from within the run_execve method, but do to the current problems, I've cut it out until I can get fork under control.