fork를 사용하여 하위 프로세스를 생성 한 Linux 서비스 프로세스가 있고 execelp를 실행하여 다른 프로그램을 실행합니다. "kill -6 [child_pid]"명령을 실행하면 효과가 없습니다. 자식 프로그램이 단독으로 실행되는 경우에도 동일한 명령으로 자식 프로그램이 종료되므로이 경우 시스템에서 신호가 처리되고 있음을 확신 할 수 있습니다. 그런데 왜 그것이 te 서비스 프로세스의 통제하에있을 때 자식 프로세스에 의해 수신되지 않는 것입니까? 어떤 도움이라도 대단히 감사하겠습니다.자식 프로세스에서 signal SIGABRT가 무시되는 이유
그리고 이것은 RedHat Linux와 CentOS에서 발생합니다.
코어 파일 크기는 무제한으로 설정됩니다.
나는 부모 프로세스가 SIGABRT를 처리 (무시)하지 않는다는 것을 알기 때문에 동일한 프로세스가 부모 프로세스에서 작동한다는 것을 말씀 드리고 싶습니다. 부모는 쉘 스크립트 (bash)에 의해 실행됩니다. 따라서 "ps"명령을 실행하면 쉘 스크립트 pid, 부모 pid 및 자식 pid가 표시됩니다. 이 명령은 상위 pid 및 쉘 스크립트 pid에서 작동합니다.
execlp 자식 프로그램 후 자식 프로세스가 신호 처리기를 상속하는 경우에도 내 이해가 있습니다.
이해가 잘못되었습니다 ... 함수의 [exec family] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html)로 인해 자식이 무시되고 차단 된 신호를 상속받습니다 . 여기에는 마법이 없습니다. 커널이 버그가 있거나 (거의 없음) 자식이'SIGABRT'를 막거나 무시하고있는 것입니다. 다른 가능성은 없습니다. – Nemo