Mik*_*ike 1 c linux fork system-calls
关于循环内fork()行为的问题.当调用fork()时,假设没有调用wait(),父进程应继续执行代码并循环回到顶部,它会提示您输入q以退出.分叉子应该立即打印其ID和中断,因为pid应该等于孩子的ID而不是0.相反,它会进入无限循环.
任何人都可以告诉我我的误解吗?
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;}
}
}
Run Code Online (Sandbox Code Playgroud)
你有fork()混合的返回值.在孩子变得0和家长获取孩子的PID.
编者注:由于您没有初始化,您的程序会在循环的第一次迭代中导致未定义的行为run.您也应该检查返回值fgets.