suspend
Bash의 기본 제공 명령입니다. 자연스럽게이 명령을 언제 사용하고 유용하다고 생각하십니까?
STOP
프로세스는 자식 프로세스를 분기 할 때 일시 중단되지 않습니다 ( 신호를 받지 않음 ). 나는 또한 두 번째 의견에 약간 혼란 스럽습니다.
wait()
나에게 합리적인 소리. 나는 쉘이 자식 프로세스를 분기 할 때마다 일시 중단 된다고 말했다 . 나는 정지 신호 수신에 대해 아무 말도하지 않았다.
suspend
Bash의 기본 제공 명령입니다. 자연스럽게이 명령을 언제 사용하고 유용하다고 생각하십니까?
STOP
프로세스는 자식 프로세스를 분기 할 때 일시 중단되지 않습니다 ( 신호를 받지 않음 ). 나는 또한 두 번째 의견에 약간 혼란 스럽습니다.
wait()
나에게 합리적인 소리. 나는 쉘이 자식 프로세스를 분기 할 때마다 일시 중단 된다고 말했다 . 나는 정지 신호 수신에 대해 아무 말도하지 않았다.
답변:
GNU screen
와 tmux
X11 및 가상 콘솔 이 모두 없지만 로그인 셸과 다른 대화식 셸간에 전환하려고 한다고 가정 해 보겠습니다 .
먼저 콘솔에서 로그인 한 다음 새 셸을 시작하여 로그인 셸을 일시적으로 차단합니다. 로그인 셸을 다시 사용하여 작업을 수행하려면을 수행하십시오 suspend
. 그런 다음 fg
대화식 쉘을 다시 가져 와서 수행했던 작업을 계속하십시오.
사실, 작업 제어와 함께, 로그인 쉘은 당신이로 전환 할 수 있음을 백그라운드 작업으로 대화 형 쉘의 숫자 산란 수 fg %1
, fg %2
등,하지만 다시 로그인 쉘을 얻을 수를, 당신은 사용할 필요가 suspend
수동에 싶어하지 않는 한 kill -s STOP $$
.
또한 대화식 쉘의 프롬프트에서 Ctrl+ Z는 일시 중단되지 않습니다.
편집 : 처음에는 suspend
스크립트에서 사용에 관한 긴 가상 섹션이 있었지만 명령에는 작업 제어가 필요하고 비 대화식 쉘에는 일반적으로 작업 제어가 없으므로 해당 섹션을 삭제했습니다.
로 suspend
대체 된 섹션을 삭제 했습니다 kill -s STOP $$
(이것은 더 이상 답변에 속하지 않지만 다른 사람들에게는 흥미로울 수 있습니다).
스크립트에 백그라운드 프로세스 (스크립트)가 있고 어떤 단계에서이 백그라운드 프로세스가 중지되고 상위 프로세스가 계속 진행할 때까지 기다려야한다고 가정 해 봅시다. 이것은 부모가 파일을 추출하고 그와 비슷한 것으로 이동할 시간을 갖도록 할 수 있습니다.
자식 스크립트는 일시 중단되고 ( kill -s STOP $$
) 부모 스크립트는 CONT
계속해도 괜찮을 때 신호를 보냅니다 .
그것은 부모 프로세스와 자식 프로세스 사이에 일종의 동기화를 구현할 수있는 기회를 제공합니다 (부모 쉘 프로세스는 자식 프로세스가 일시 중단되었다고 추측 할 필요성이 거의 없지만 기본적으로 자식 프로세스를 통해 해결할 수는 있지만) CONT
해당 신호가 너무 일찍 수신되면 트랩 하지 않고 일시 중단하지 않습니다).
fork/exec
시스템 호출이 필요합니다