【发布时间】:2016-01-16 12:06:59
【问题描述】:
我的作业有问题。
在父进程死亡后,我必须在子进程中从终端读取数据。写得很清楚,父进程必须在执行子进程后立即死亡,所以我找到的解决方案(例如使用wait())对我没有用。
我的代码
int main(void)
{
printf("start main\n");
if(fork() == 0){
char buffer[64];
fgets(buffer, 64, stdin);
printf("Child process: %s\n", buffer);
}
else printf("end main\n");
//Using WAIT() here is not allowed in my assignment.
return 0;
}
它不会等待我输入数据。似乎父进程结束后,子进程在后台,无法从终端读取任何数据。
结果
damian@damian-Virtualbox:-$ ./testuje
start main
end main
damian@damian-Virtualbox:-$ Child Process:
echo test | ./testuje
start main
end
damian@damian-Virtualbox:-$ Child Process: test
程序应该做什么
print: start main
print: end main
then it should:
wait for user to type something
print: child process: text_typed_by_user
编辑:有人建议我使用tee 命令。你知道如何使用它来实现我想要的吗?
【问题讨论】:
-
您的输出与您的代码不匹配。请准确地向我们展示代码,准确地输出,并告诉我们您的期望。
-
我在 VirtualMachine 上有这个,复制该代码需要付出更多的努力,所以我手动输入了它。除了这个 printf 没有任何区别。
-
请勿张贴文字图片!
-
我会记住这一点的。