2014-03-26 54 views
1

我有一个C程序,它将文件作为参数,清理文件并将清理过的数据写入新的临时文件。然后它接受一些标准输入,清理并发送标准输出。管道并发和文件

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

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

我要么得不到或者从./file_operation荒谬stdout和我相信这是因为它是从仍然被写入文件中读取/没有在这一点上存在。

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

+0

欢迎来到Stack Overflow。请尽快阅读[关于]页面。 'file_operation'正在读取'file_cleanse'在标准输出(管道)上写入的内容,还是从标准输入中读取更多数据进入'file_cleanse'?你的描述至少不明确。 'file_cleanse'如何确定临时文件名?为什么不知道要写入哪个文件? –

回答

0

什么:

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

当我明白这个问题,file_operation需要处理临时文件后读取的file_cleanse标准输出,但直到file_cleanse已经写了一些数据,它不应该处理的临时文件其标准输出(标准输入file_operation)。

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