답변:
에서 man tgkill
:
tgkill ()은 시그널 sig를 쓰레드 그룹 tgid의 쓰레드 ID tid를 갖는 쓰레드에게 보낸다. 반대로, kill (2)는 전체 프로세스 (즉 스레드 그룹)에 신호를 보내는 데만 사용할 수 있으며 신호는 해당 프로세스 내의 임의의 스레드로 전달됩니다.
그냥 0 신호가 무엇인지에 대한 질문을 남겨 둡니다. 대답은 전혀 없습니다. :
프로세스 ID가 있지만 유효한지 여부가 확실하지 않은 경우 가장 가능성있는 후보 (kill 명령)를 테스트 할 수 있습니다. kill (1) 매뉴얼 페이지에서 이에 대한 참조가 보이지 않으면 정보 페이지를 확인하십시오. man / info 페이지는 시그널 0이 특별하고 kill의 종료 코드가 시그널이 지정된 프로세스 (또는 프로세스)로 전송 될 수 있는지 여부를 알려줍니다.
그만큼 tgkill
호출을 통해 모니터링하는 프로세스 내에서 다양한 스레드의 존재 여부를 테스트합니다. strace
. 반환 값 0은 테스트 된 스레드가 존재 함을 나타냅니다. 지금 대답 할 질문은 프로세스가 테스트를 반복하는 이유는 무엇입니까? (나는 그것이 그것이 무엇을하고 있다고 가정합니다. 아마 당신이 보았던 다른 것을했을 경우 아마도 당신이 질문했을 것입니다.)