mysql
간접적으로 호출하는 (긴 SQL 스크립트 실행) Perl 스크립트가 있습니다 . 이 스크립트가 실행되는 동안 Ctrl+를 비활성화하고 싶지만 C어쨌든 신호가 여전히 도착하고 mysql
"Ctrl-C - 쿼리가 종료되었습니다. 정상적으로 계속하십시오."라고 표시됩니다 mysql
.
나는 가지고있다:
- "IGNORE"로 설정하십시오
$SIG{INT}
. 실제로 Perl 스크립트는 계속 실행됩니다. - Perl 스크립트에서 프로세스 그룹 설정 - 실제로 내 Perl 스크립트와 동일한 프로세스 그룹에 있는
ps -e -o uid,pid,ppid,pgid,command
것으로 표시mysql
mysql
이 두 가지가 모두 발생한 후에 호출됩니다.
이 신호가 여전히 프로세스에 도달하는 이유는 무엇 mysql
이며 이러한 일이 발생하지 않도록 하려면 어떻게 해야 합니까?
답변1
SIG_IGN
다음과 같은 코드를 작성 하면https://stackoverflow.com/questions/3232613/how-to-stop-sigint-being-passed-to-subprocess-in-pythontrap
) 또는 다음과 같이 셸에서 사용됩니다.Bash에서 SIG_IGN 및 SIG_DFL에 신호 트랩을 어떻게 설정할 수 있습니까?, 내 생각엔 Perl에서는 이것이 perlipc
라이브러리 인 것 같아요https://metacpan.org/pod/perlipc,IPC는프로세스 간 통신
"IGNORE" 또는 "DEFAULT" 문자열을 처리기로 지정하도록 선택할 수도 있으며, 이 경우 Perl은 신호를 삭제하거나 기본 작업을 수행하려고 시도합니다.