【发布时间】:2023-03-07 11:16:01
【问题描述】:
有谁知道我运行这段代码时为什么printf("Type q to quit") 行会在终端中打印两次:
#include <stdio.h>
#include <unistd.h>
int main (int argc, char *argv[])
{
char run[2];
run[0]='a';
int pid=0;
while (run[0]!= 'q')
{
printf("Type q to quit \n");
fgets (run, 2, stdin);
pid=fork();
//wait();
if(pid==0) { break;}
}
}
我希望孩子从循环中中断,而父母继续循环(以创建新的孩子)。如果我调用wait(),无论我是否输入'q',执行都会在第一次迭代后结束。否则,它会按预期工作,但每次都会打印两次 "Type q to quit" 行。为什么会这样?
【问题讨论】:
标签: c linux fork system-calls