I am trying to do my homework where I need to use fork()
, but I do not know why I cannot stop my forks after starting them through the for loop:
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> int main(int argc, char *argv[]){ int limit = argc/2; if(argc%2 == 0){ perror("the number of arguments given must pe even!"); exit(1); } int i; for(i=0; i<=limit; i++){ if(fork()==-1){ perror("childes couldn't be created\n"); exit(1); } if(fork()==0){ printf("fork: %d \n",i); exit(1); } wait(0); } printf("exiting...\n"); return 0; }
Conclusion:
warzaru@ubuntu :~/OS/UprocH$ ./exe abcd fork: 0 fork: 0 fork: 1 fork: 1 fork: 1 fork: 2 fork: 2 fork: 1 fork: 2 exiting... exiting... fork: 2 exiting... exiting... fork: 2 exiting... exiting... exiting... warzaru@ubuntu :~/OS/UprocH$ fork: 2 fork: 2 fork: 2 exiting...
source share