Golang에서 신호 잡기
일부 시나리오에서는 Golang에서 생성된 신호를 모니터링하고 잡는 프로세스 래퍼를 구현해야 할 수도 있습니다. 시작된 프로세스. 프로세스 래퍼는 프로세스를 시작하고 SIGKILL 및 SIGTERM과 같은 신호를 처리해야 합니다.
프로세스 시작
프로세스를 시작하려면 syscall.Exec 함수를 사용할 수 있습니다. . 이 기능을 사용하면 명령을 실행하고 해당 입력 및 출력 스트림을 리디렉션할 수 있습니다. 예는 다음과 같습니다.
func launchCmd(path string, args []string) { err := syscall.Exec(path, args, os.Environ()) if err != nil { panic(err) } }
신호 잡기
Go에서는 signal 패키지를 사용하여 프로세스로 전송된 신호를 잡을 수 있습니다. signal.Notify 함수를 사용하면 지정된 신호에 대한 알림을 받을 채널을 등록할 수 있습니다. 예:
sigc := make(chan os.Signal, 1) signal.Notify(sigc, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { s := <-sigc // ... do something ... }()
이 코드에서 sigc는 지정된 신호 유형에서 신호를 수신하는 채널입니다. select 문을 사용하여 이 채널의 신호를 수신하고 적절한 작업을 수행할 수 있습니다.
추가 참고 사항
위 내용은 Go에서 시작된 프로세스의 신호를 어떻게 포착하고 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!