C 连续管道输入

C 连续管道输入,c,bash,shell,C,Bash,Shell,我正在寻找一种将输入从一个程序连续输入到另一个程序的方法。iNotify或file polling是否可以用于stdin,或者我最好使用临时文件 编辑 抱歉,没有指出它是指壳管而不是管道(2)。管道已连续运行。如果运行prog1 | prog2,每次prog1向stdout写入更多输出时,prog2将在stdin上看到并能够读取它prog2在prog1关闭管道的一侧(或出口,其作用相同)之前,不会在管道上看到文件的结尾。你是在说管道(2)?/prog2

我正在寻找一种将输入从一个程序连续输入到另一个程序的方法。iNotify或file polling是否可以用于
stdin
,或者我最好使用临时文件

编辑


抱歉,没有指出它是指壳管而不是管道(2)。

管道已连续运行。如果运行
prog1 | prog2
,每次
prog1
向stdout写入更多输出时,
prog2
将在stdin上看到并能够读取它
prog2
prog1
关闭管道的一侧(或出口,其作用相同)之前,不会在管道上看到文件的结尾。

你是在说管道(2)?
/prog2
有什么问题?@KerrekSB那不是管道,那是外壳redirection@shiplu.mokadd.im:好的,当然,但是如果它解决了问题,为什么不呢?(应该是
/prog2注意,Shell使用
管道(2)
在所有类Unix计算机上创建管道。这通常是合理的标准做法,但请注意,
prog1
很可能会终止而不关闭管道。例如,如果
prog1
sh-c'yes&'
,则它将终止,但会产生运行
yes
的子进程ch使管道保持打开状态。很容易看到更多的病理病例。@Williampersell这是真的,但有点离题。我想证明只要prog1保持管道打开状态,管道就会保持打开状态。显然有更多的细节和角落案例来描述管道的一般行为,但对于我描述的基本用例,我在这个问题上,一个简单的管道就足够了。@williampersell感谢您的通知,如果
prog1
已经终止,我就不会考虑管道的状态。是否有任何标准或编码实践可用于检查该管道的状态。因为它没有分叉,我想不出任何方法来检查这两个管道的状态程序。@Blackninja543我不确定我是否完全理解你的问题。
如果prog1 | prog2;那么
是检查管道出口状态(即
prog2
的状态)的标准方法。请注意,我在第一条评论中提到的警告确实不需要担心,因为这是一个相当罕见的问题。