使用EOF输入输入流

时间:2009-05-27 14:46:28

标签: c io

我正在构建一个执行各种命令的小shell解释器,我通过分叉我的进程来实现这一点。

但是,我希望子进程停止等待标准输入流中的输入,并且它通过期望EOF来实现。如何故意将EOF推入该流?

更具体地说,如果我在这种情况下循环:

while (fgets(&input, 1024, stdin) != NULL) { // .....

我怎么能让它变得虚假?

3 个答案:

答案 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)

难道你不关闭管道的另一端吗?