管道并发和文件

时间:2014-03-26 04:09:30

标签: c bash shell piping

我有一个C程序,它将文件作为参数,清理文件并将清理后的数据写入新的临时文件。然后它接受一些stdin,清理它并发送它stdout。

我有第二个文件,它对这个临时文件和stdin再次执行操作。

./file_cleanse <file1.txt> | ./file_operation <temp.txt>

我要么从./file_operation得到没有或没有意义的stdout,我相信这是因为它正在从一个仍然被写入的文件中读取/此时不存在。

有没有办法让./file_operation等到./file_cleanse在bash中返回一个值?

2 个答案:

答案 0 :(得分:0)

怎么样:

./file_cleanse <file1.txt> > /tmp/temporaryFile
./file_operation <temp.txt> < /tmp/temporaryFile

答案 1 :(得分:0)

据我所知,file_operation需要在处理临时文件后读取file_cleanse的标准输出,但在file_cleanse写入一些数据之前不应处理临时文件到其标准输出(file_operation的标准输入)。

如果这是正确的,那么file_operation的简单同步就是从其标准输入读取(一个字节或任何方便的大量数据)。如果成功,file_cleanse必须已完成临时文件;因此,file_operation可以处理临时文件,然后读取其余的标准输入并进行相应的处理。