Go 프로세스에서 하위 실행 파일 종료
Go에서 별도의 실행 파일을 실행하는 여러 스레드를 실행하는 경우, 실행 시 이러한 하위 프로세스가 종료되도록 합니다. 상위 Go 프로세스를 종료하는 것이 중요해집니다. 이 문서에서는 이 목표를 달성하기 위해 사용 가능한 방법을 탐색하여 이 문제를 다룹니다.
방법 1: 프로세스 그룹
한 가지 접근 방식은 동일한 프로세스에서 하위 프로세스를 시작하는 것입니다. 상위 Go 프로세스로 그룹화합니다. 이렇게 하면 상위 프로세스가 종료 신호(예: SIGKILL 또는 SIGINT)를 수신하면 하위 실행 파일을 포함한 전체 프로세스 그룹이 종료됩니다.
방법 2: Pdeathsig 속성
syscall.SetProcAttr 함수 내의 Pdeathsig 속성을 사용하면 신호를 지정할 수 있습니다. 상위 프로세스가 종료되면 하위 프로세스로 전송됩니다. 이 속성을 종료 신호(예: syscall.SIGTERM)로 설정하면 상위 Go 프로세스가 종료될 때 하위 프로세스에 종료하라는 신호가 전달됩니다.
신호 처리
SIG_KILL의 효율성이 보장되지는 않지만 SIG_INT 및 SIG_TERM과 같은 일반적인 신호에 대한 신호 처리기를 설정할 수 있습니다. 이 핸들러 내에서 syscall.Kill 또는 cmd.Process.Kill을 사용하여 하위 프로세스를 수동으로 종료할 수 있습니다.
예제 코드:
다음 코드 샘플은 사용 방법을 보여줍니다. 하위 프로세스 종료를 보장하기 위한 Pdeathsig:
cmd := exec.Command("./long-process") cmd.SysProcAttr = &syscall.SysProcAttr{ Pdeathsig: syscall.SIGTERM, }
위 내용은 Go Parent 프로세스가 종료될 때 하위 프로세스를 안정적으로 종료하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!