Go: 신호 원점 검색
Go에서는 신호 캡처가 가능하지만 신호를 트리거한 PID를 결정하는 것이 어려울 수 있습니다.
신호의 한계 처리
Go는 내부적으로 신호 처리기를 관리하며 신호 발생자의 PID에 액세스할 수 있는 공식적인 방법은 없습니다. 제공된 예에서 관찰된 바와 같이 반환된 신호 정보에는 이 데이터가 포함되지 않습니다.
대체 접근 방식
파이프 또는 세마포어와 같은 대체 통신 방법 사용 , 신호 출처 결정이 중요한 경우에 더 적합할 수 있습니다.
복잡한 솔루션 C
공식적으로 지원되지는 않지만 C에서 PID를 캡처할 수 있는 사용자 정의 신호 처리기를 설정하는 것이 가능합니다. 그러나 이 접근 방식은 복잡하고 잠재적인 위험을 초래합니다.
다음은 GitHub 문제 7227에서 Ian이 제안한 솔루션을 기반으로 한 예입니다.
package main import ( "C" "os" "syscall" "time" ) func main() { C.test() pid := os.Getpid() for { syscall.Kill(pid, syscall.SIGUSR1) time.Sleep(time.Second) } }
이 예는 C의 sigaction을 사용하여 발신자의 PID를 인쇄하는 사용자 정의 신호 처리기.
위 내용은 Go에서 신호 발생기의 PID를 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!