我有一个C程序,它将文件作为参数,清理文件并将清理后的数据写入新的临时文件。然后它接受一些stdin,清理它并发送它stdout。
我有第二个文件,它对这个临时文件和stdin再次执行操作。
./file_cleanse <file1.txt> | ./file_operation <temp.txt>
我要么从./file_operation得到没有或没有意义的stdout,我相信这是因为它正在从一个仍然被写入的文件中读取/此时不存在。
有没有办法让./file_operation等到./file_cleanse在bash中返回一个值?
答案 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
可以处理临时文件,然后读取其余的标准输入并进行相应的处理。