2014-03-26 6 views
1

파일을 인수로 사용하여 파일을 정리하고 정리 된 데이터를 새 임시 파일에 기록하는 C 프로그램이 있습니다. 그런 다음 몇 가지 표준을 받아 들여서 정리하고 표준 출력을 보냅니다.파이핑 동시성 및 파일

이 임시 파일과 stdin에서 작업을 다시 수행하는 두 번째 파일이 있습니다.

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

내가 하나가 더 나 ./file_operation에서 무의미한 표준 출력을 얻을 나는 아직도 쓰고 있어요 파일에서 읽고 있기 때문입니다 생각 /이 시점에서 존재하지 않습니다.

./file_cleanse가 bash에서 값을 반환 할 때까지 ./file_operation을 대기시킬 수있는 방법이 있습니까?

+0

스택 오버플로에 오신 것을 환영합니다. 곧 [About] 페이지를 읽으십시오. '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은 임시 파일을 처리 한 다음 나머지 표준 입력을 읽고 적절하게 처리 할 수 ​​있습니다.