C: fork() child processes

半腔热情 提交于 2019-12-25 06:37:03

问题


According to the textbook I am reading, the code below creates N child processes that will exit with unique statuses.

/* Parent creates N children */
for (i = 0; i < N; i++)
    if ((pid[i] = Fork()) == 0) /* Child */
        exit(100+i);

Earlier in the textbook, it states that the following code will have 8 lines of output:

int main(){
    Fork();
    Fork();
    Fork();
    printf("hello\n");
    exit(0);
}

This leads me to believe that there are 2^n child processes, where n is the number of times fork() is called. Is the reason the first code only produces N child processes (as opposed to 2^N) because the child exits every time, so by the time the subsequent fork() is called, it only operates on the parent process?


回答1:


Every successful call to fork(), creates a new process.

In the first example, the children processes (the return value of fork() being 0) call exit();, which means they won't call the next fork().

In the second example, every children process continues forking.




回答2:


When fork() is called it copies the parent data and starts executing from that point individually. So the execution of the parent or child is depend on the scheduling of process. Whichever process get cpu time will be executed whether it is child or parent. We have to take care that which code should run by which process(child or process).



来源:https://stackoverflow.com/questions/21820243/c-fork-child-processes

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!