[unix] 전경 작업이있는 ctrl c vs. ctrl z

Ctrl+ Z는 작업을 중지하고 Ctrl+ C는 작업을 종료합니다.

왜 그런가요? 다른 방법으로 이해가되지 않습니까?

z@z-lap:~$ sleep 100&
[1] 4458
z@z-lap:~$ sleep 200&
[2] 4459
z@z-lap:~$ jobs
[1]-  Running                 sleep 100 &
[2]+  Running                 sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^Z
[1]+  Stopped                 sleep 100
z@z-lap:~$ jobs
[1]+  Stopped                 sleep 100
[2]-  Running                 sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^C
z@z-lap:~$ jobs
[2]+  Running                 sleep 200 &



답변

작업 제어 표기법에 대해 혼란 스러울 수 있습니다. 특히 “중지됨”은 작업이 아직 진행 중이지만 처리 할 수있는 기능이 유지되었음을 나타냅니다 (CPU에서 처리 할 시간이 없음). 올바른 기술 용어는 아니지만 실제로는 “일시 중지”또는 “일시 중지”상태입니다.

  • CtrlC작업을 “중지”하지 않고 취소하거나 종료합니다. 기술적으로 인터럽트 신호가 프로그램으로 전송되어 수행중인 작업을 중단하고 즉시 종료하도록 지시합니다. 일부 프로그램은이 신호를 듣고 종료하기 전에 자체적으로 응급 정리 작업을 수행합니다. 다른 사람들은 신호에 응답하지 않고 그 후에 중단됩니다.

  • CtrlZ반면에 “직업을 중지”합니다. 다시 이것은 신호로 이루어 지지만 이번에는 ‘인터럽트’신호 대신 ‘정지’입니다. 이것은 효과적으로 보류 상태로 만들고 제어를 쉘로 리턴하지만 실제로 작업을 종료하지는 않습니다. 이러한 작업을 계속 실행 bg하려면 마지막으로 중지 된 작업을 백그라운드로 전송 하는 명령을 발행 할 수 있습니다 . 그런 다음 처음부터 실행 한 것처럼 백그라운드 작업으로 계속 실행됩니다 &. 또한 fg포 그라운드에서 마지막으로 중지 된 작업을 재개하는 데 사용할 수 있습니다 ( 중지 된 위치에서 계속 진행하고 다시 작업 할 수 있도록 허용).


답변