리눅스에서 실행되는 간단한 데몬을 C로 작성했습니다. 신호 마스크를 올바르게 설정하는 방법을 이해하려고합니다. 내 데몬에 다음 코드가있다.리눅스 C 데몬에서 신호 마스크 설정하기
여기서 signal_handler는 정의 된 함수이다. 이 thread에 설명되어있는 데몬 중지 문제가 있습니다.
다른 환경 (동일한 사용자, 동일한 시스템)에서 데몬이 시작될 때 블록 마스크의 문제점을 추적했습니다. 다음 'PS'출력 명령 줄에서 데몬을 산출 시작 : PHP 스크립트를 통해 동일한 데몬을 시작할 때,
> ps -C powid -o pid,ppid,command,blocked,caught,ignored
PID PPID COMMAND BLOCKED CAUGHT IGNORED
11406 1 ./powid 0000000000390000 0000000180004003 0000000000000000
는 수율 :
> ps -C powid -o pid,ppid,command,blocked,caught,ignored
PID PPID COMMAND BLOCKED CAUGHT IGNORED
11491 1 ./powid fffffffe3bfbe207 0000000180004003 00000000010010
내 질문은 왜이다 차단 된 마스크가 다릅니다. 내 이해는 주어진 C 코드가 차단 된 마스크를 모든 조건에서 동일하게 만들 것을 제안한다.
PHP 인터프리터가 그렇게하기 때문에. PHP를 사용하지 마십시오. – 0andriy
도움이되지 않습니다. 불행히도 – Marius
알다시피, PHP는 프로그래밍 언어도 좋은 환경도 아닙니다. 누구든지 그것을 고의로 선택했습니다. 따라서 고통은 번들의 일부입니다. – 0andriy