C 连续管道输入
我正在寻找一种将输入从一个程序连续输入到另一个程序的方法。iNotify或file polling是否可以用于C 连续管道输入,c,bash,shell,C,Bash,Shell,我正在寻找一种将输入从一个程序连续输入到另一个程序的方法。iNotify或file polling是否可以用于stdin,或者我最好使用临时文件 编辑 抱歉,没有指出它是指壳管而不是管道(2)。管道已连续运行。如果运行prog1 | prog2,每次prog1向stdout写入更多输出时,prog2将在stdin上看到并能够读取它prog2在prog1关闭管道的一侧(或出口,其作用相同)之前,不会在管道上看到文件的结尾。你是在说管道(2)?/prog2
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
的状态)的标准方法。请注意,我在第一条评论中提到的警告确实不需要担心,因为这是一个相当罕见的问题。