내가 아는 한, 명령을 A
명령에 파이프하면 B
실행되고 A
출력이 B
입력으로 사용됩니다. 예를 들어 일부 명령은 무한하지만 yes
이러한 명령의 실행 시간은 해당 명령을 중단할 때까지입니다. 배관 작업은 어떻게 되나요?
예:
yes | sudo dnf install pkg
답변1
명령 A는 끝없는 출력을 생성할 수 있지만 명령 B는 제한된 양의 출력만 읽습니다. 명령 B가 종료되면(또는 해당 입력 파일 설명자를 닫으면) 파이프가 삭제됩니다.
그 후 명령 A에서 파이프로 쓰기를 수행하면 커널이 SIGPIPE
명령 A에 신호를 보냅니다. 기본 작업은 SIGPIPE
프로세스를 종료하는 것입니다.