저는 운영 체제 클래스의 프로그래밍 할당 작업을하고 있으며 출력이 터미널에 나타나는 방식과 관련하여 몇 가지 문제가 있습니다.파이프를 사용하는 C 프로그래밍이 비정상적으로 표준 출력으로 표시됩니다.
프로그램의 목적은 파일이나 STDIN으로부터 입력을 받아 들여 본질적으로 4 개의 파이프를 통과시켜 단어의 빈도를 얻는 것입니다. 저는 fork(), execlp() 및 pipe()를 호출하여 프로그램을 완료하는데 어려움을 겪지 않지만, 마지막 자식이 실행되어 터미널에 다음과 같이 인쇄 될 때까지 :
os-class ~/cs344/Homework3 190% myword text.txt
os-class ~/cs344/Homework3 191% 1 aaaaa
1 aaaaaa
1 aaaaaaa
8 it
5 s
5 sa
는 (저는 여기에 191 %를 'LS'같은 것을 명령을 입력 할 수 있습니다 ..)
myword 내 실행하고 text.txt 내가 테스트를 위해 사용하고 파일입니다. 내 파이프가 STDIN 및 STDOUT으로 올바르게 정렬되어 있기 때문에 주로 혼란 스럽습니다. 어딘가에 wait()
을 삽입해야합니까?
어떤 제안을 해주셔서 감사 드리며 이미 어딘가에 대한 답변이 있으면 죄송합니다. 나는 무엇을 검색해야하는지 정확히 알지 못했다.
예. 아마도'wait()'(또는 아마도 여러 회선의 wait() 호출을 사용해야 할 것입니다.) 아마 myword가 종료되기 전에 모든 출력이 나타나는지 확인해야합니다. –