Ctrl+C는 터미널을 종료하지 않고 프로세스를 종료합니다.

Ctrl+C는 터미널을 종료하지 않고 프로세스를 종료합니다.

Ubuntu 14.04에서 Sublime Text 3(인터프리터 PDE 패키지 솔버)를 사용하여 FreeFem 스크립트를 컴파일하기 시작했습니다. 인터프리터를 호출하기 위해 다음과 같이 빌드 시스템을 사용자 정의했습니다.

"shell_cmd": " gnome-terminal -x sh -c \"FreeFem++ $file ; exec sh\""

컴파일을 실행할 때마다 FreeFem++를 실행하기 위해 별도의 터미널 프로세스를 만들고 싶습니다. 하지만 Ctrl+를 누르면 C터미널이 종료됩니다. 대신 프로세스를 종료하고 터미널 창을 열어두고 싶습니다.

답변1

Ctrl+ CSIGINT 신호가 전체 포그라운드 프로세스 그룹으로 전송되므로 쉘 및 FreeFem 하위 프로세스를 종료합니다. 쉘은 대화형이 아니기 때문에 하위 프로세스는 동일한 프로세스 그룹에서 실행됩니다. 바라보다SIGINT가 상위 프로세스로 전송될 때 하위 프로세스로 전파되지 않는 이유는 무엇입니까?그리고추상화, 세션, 세션 리더 및 프로세스 그룹의 목적은 무엇입니까?프로세스 그룹에 대한 일부 배경 정보입니다.

트랩을 설정하면 SIGINT를 수신할 때 쉘이 죽는 것을 방지할 수 있습니다. (신호를 무시하지 마십시오. 이렇게 하면 하위 프로세스에서도 신호를 무시하게 됩니다.)

"shell_cmd": " gnome-terminal -x sh -c \"trap echo INT; FreeFem++ $file ; exec bash\""

관련 정보