Go 中進程終止後終止可執行檔
在Golang 執行緒中執行單獨的執行檔時,確保這些執行檔在主行程被殺死。這可能是由使用者操作或其他外部因素引起的。
解決方案:
實現此目的有兩種主要方法:
1 。進程組終止:
在與主進程相同的進程組中建立子進程。當主進程被殺死時,整個進程組,包括子可執行文件,都將被終止。
2. Pdeathsig 系統呼叫:
使用 syscall.SetProcAttr 函式設定子程序的 Pdeathsig 屬性。此屬性決定當父進程退出時將傳送給子進程的訊號。透過將其設定為 syscall.SIGTERM 等值,您可以確保子進程完全終止。
範例:
cmd := exec.Command("./long-process") cmd.SysProcAttr = &syscall.SysProcAttr{ Pdeathsig: syscall.SIGTERM, }
其他注意事項:
透過實作這些方法,您可以確保當進程本身終止時,Golang 進程呼叫的任何可執行檔都會被終止,從而允許用於乾淨的進程終止並防止孤立進程。
以上是如何確保當 Go Parent 程序被終止時子可執行檔終止?的詳細內容。更多資訊請關注PHP中文網其他相關文章!