2016-10-21 4 views
0

터미널 설정을 변경하는 코드 (파이썬을 포함하고 일부 터미널 조작 모듈을 사용함)에서 Ctrl- \ SIGQUIT를 프로세스로 보내면 변경된 상태가 유지됩니다 .신호 처리기에서 터미널 설정 (termios) 복원

시작시 터미널 설정을 저장하고 나서이를 복원하는 SIGQUIT 처리기를 등록하는 것이 안전합니까? 안전하지 않다면 최악의 경우 어떻게 될 수 있습니까?

답변

0

신호 처리기는 일반적으로 가늘고 길지 않아야합니다. 시그널 핸들러에서 비동기 안전하지 않은 함수를 호출하면 안됩니다. Async-signal-safe functions. 당신의 termios의 코드는 신호 처리기에서 터미널 설정의 복원보다 기능 AS 비 포함한다면, 권장하지 않습니다 (당신이 처리 하겠지만 SIGQUIT) 이것에 대해 어떻게

:

fork()가에서 안전으로 표시됩니다 맨 페이지는 signal입니다. 왜 자식 프로세스를 포크, execv 설정을 복원하는 다른 프로그램?

+0

유용한 답변이지만 첫 번째 부분을 이해하지 못합니다. "귀하의 프로그램 범위를 벗어났습니다." 어떻게 알았어? 다른 부분이 터미널 설정을 처음부터 변경하기 때문에 이는 범위 내에 완전히 포함됩니다. – eudoxos

+0

아니요. 프로그램을 종료 한 후에도 변경 사항이 지속될 것임을 의미했습니다. 나는 당신이 언급 한 것을 되풀이하고있었습니다. 그 statemetns을 제거했습니다 – Prabhu

+0

아, 좋아, 이해 :) – eudoxos