간단한 파이프라인이 있다고 가정해 보겠습니다.
set -eo pipefail;
echo 'foo' | cat
cat
언제 그만둬야 할지 어떻게 알 수 있나요 ? STDIN 스트림이 끝날 때인가요, 아니면 cat
신호가 수신될 때인가요? 내 예에서 생산자 프로세스는 SIGINT를 수신한 다음 코드 1로 종료했습니다. 그렇다면 (소비자 프로세스)는 cat
생산자 프로세스가 어떤 종료 코드로 종료되었는지 어떻게 알 수 있습니까?
답변1
cat
모른다는 징후 echo
. 각 파일 끝 조건을 수신합니다.인적관리(7):
파이프의 쓰기 끝을 참조하는 모든 파일 설명자가 닫힌 경우 파이프에서 read(2)를 시도하면 파일 끝이 표시됩니다(read(2)는 0을 반환함).
그러나 파이프 작성자에게는 SIGPIPE가 있습니다. 동일한 매뉴얼 페이지를 참조하십시오