我必须在 UNIX 中模拟 C 程序中的 shell 行为,记住一件重要的事情:父进程接收所有命令并将它们发送给子进程。然后孩子执行收到的命令,然后将输出发送给父亲。这个想法是我从父母和我的主要孩子 fork() 收到命令,以便他自己的孩子可以执行命令并将输出发送到 fifo 管道。问题是我无法打破 while 循环(打印正确的输出):
mkfifo("output",S_IFIFO|0644);
while(read(fifod2,&c,1))
printf("%c",c);
我意识到fifo的大小是可变的,但是第二个孩子在终止时必须发送一个EOF,所以当读取到达它时,返回0。但这似乎没有发生。如果需要,请向我索取更多代码部分。谢谢