Unix 백그라운드 프로세스가 종료 직후에 종료 줄을 인쇄하지 않는 이유는 무엇입니까?

Unix 백그라운드 프로세스가 종료 직후에 종료 줄을 인쇄하지 않는 이유는 무엇입니까?

예를 들어, 다음을 실행하면:

sleep 1 & sleep 2 & sleep 3

나는 즉시 다음과 같은 프로세스 ID를 얻습니다.

[1] ...
[2] ...

sleep 3그런 다음 실행이 완료될 때까지 셸이 정지된 후 동시에 다음을 인쇄합니다.

[1]-  Done                    sleep 1
[2]+  Done                    sleep 2

이 동작을 일으키는 기본 구현이 무엇인지 궁금합니다.

답변1

쉘의 대기는 sleep배경이 없는 마지막 쉘로 인해 발생합니다.

정보

[1]-  Done                    sleep 1
[2]+  Done                    sleep 2

일반적으로 인쇄는 편리한 시간에 이루어지며, 대부분 메시지가 표시될 때 이루어집니다. 노력하다

sleep 3 &

그리고 10까지 센다. 출력이 생성되지 않습니다. 그러나 Enter 키를 누르면 새 프롬프트가 표시되고 그 전에는 메시지가 표시됩니다 Done.

이것은 귀하가 겪고 있는 것과 동일한 상황입니다.

관련 정보