C 管道并发和文件

C 管道并发和文件,c,bash,shell,piping,C,Bash,Shell,Piping,我有一个C程序,它将一个文件作为参数,清理该文件并将清理后的数据写入一个新的临时文件。然后它接受一些stdin,清理并发送stdout 我有第二个文件,它对这个临时文件和stdin再次执行操作 ./file_cleanse <file1.txt> | ./file_operation <temp.txt> /file_clean./file_操作 我从./file\u操作中得到的不是没有就是毫无意义的标准输出,我相信这是因为它正在读取一个此时仍在写入/不存在的文件 有

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

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

./file_cleanse <file1.txt> | ./file_operation <temp.txt>
/file_clean./file_操作
我从./file\u操作中得到的不是没有就是毫无意义的标准输出,我相信这是因为它正在读取一个此时仍在写入/不存在的文件

有没有办法让./file\u操作等待./file\u clean在bash中返回一个值?

那么:

./file_cleanse <file1.txt> > /tmp/temporaryFile
./file_operation <temp.txt> < /tmp/temporaryFile
/file\u clean>/tmp/temporaryFile
./file_操作
据我所知,
文件清理操作
需要在处理临时文件后读取
文件清理
的标准输出,但在
文件清理
将一些数据写入其标准输出(
文件清理操作
的标准输入)之前,它不应处理临时文件


如果这是正确的,那么一个简单的同步就是
文件\u操作
从其标准输入读取(一个字节或任何方便的较大数据量)。当此操作成功时,
文件\u clean
必须已完成对临时文件的处理<因此,代码>文件\u操作可以处理临时文件,然后读取其标准输入的其余部分并进行适当处理。

欢迎使用堆栈溢出。请尽快阅读这一页。是
file\u操作
读取
file\u clean
在其标准输出(管道)上写入的内容,还是从进入
file\u clean
的标准输入中读取更多数据?你的描述至少是模棱两可的。
file\u clean
如何确定临时文件名?为什么不告诉它要写入哪个文件?