我正在构建一个执行各种命令的小shell解释器,我通过分叉我的进程来实现这一点。
但是,我希望子进程停止等待标准输入流中的输入,并且它通过期望EOF来实现。如何故意将EOF推入该流?
更具体地说,如果我在这种情况下循环:
while (fgets(&input, 1024, stdin) != NULL) { // .....
我怎么能让它变得虚假?
答案 0 :(得分:1)
常规方法是在发送(父)端关闭流。
答案 1 :(得分:1)
不确定你的shell在做什么 - 但我想这样做的方法是在fork()
的子端关闭“标准输入流”,然后不要费心阅读从它再次。如果你分叉了一个孩子做某事,为什么它会回到主输入处理循环中。
在伪代码中
if (pid = fork())
{
// parent - wait for child to do it's thing and then process another command
}
else
{
// child
close(0);
// do some sort of command processing and then exit
}
答案 2 :(得分:0)
难道你不关闭管道的另一端吗?