程序应该fork,然后父进程应该读取用户输入,发送给子进程;孩子应该处理它,然后将结果发送给打印它的父母(它需要以这种方式工作)。
我已经完成了它的一部分,但程序在第一次从fifo读取后锁定。
我怀疑问题出在第122-199行之间。使管道无阻塞使程序在185处跳过scanf并无限循环。在写入之前和读取之后关闭并重新打开管道会产生相同的效果。
以下是来源:link。
稍后编辑(澄清):
父项在184的printf之前阻塞,当它读取第二个命令时(第一次看起来工作得很好)。
我没有实现“孩子把东西送回父母”部分。目前我只想让子输出通过父管道收到的数据,然后将控制权交还给父级以读取另一个命令。
当父母读取输入并通过管道发送输入时,孩子处于暂停状态(pause()),然后它唤醒孩子并进入暂停状态。孩子从管道中读取数据并将其输出,然后唤醒父母并进入睡眠状态。