【发布时间】:2013-10-24 23:43:43
【问题描述】:
关于循环内fork() 行为的问题。当fork() 被调用时,假设wait() 未被调用,父进程应该继续执行代码并循环回到顶部,提示您输入q 以退出。由于pid 应该等于孩子的 ID 而不是 0,所以分叉的孩子应该立即打印它的 ID 和中断。相反,它会进入无限循环。
谁能告诉我我在误解什么?
int main (int argc, char *argv[])
{
char run[2];
int pid=0;
while (run[0]!= 'q')
{
printf("Type q to quit \n");
fgets (run, 2, stdin);
pid=fork();
//wait();
printf("child ID: %i\n", pid);
if(pid!=0) { break;}
}
}
【问题讨论】:
标签: c linux fork system-calls