在 Go 中處理進程時,了解具有給定 PID 的特定進程是否存在至關重要。使用 os.FindProcess 可能不會總是提供結論性資訊。為了解決這個問題,Go 提供了一個簡單有效的方法來檢查進程是否存在:
傳統的 UNIX 方法是向進程發送 0 訊號使用殺戮。如果訊號發送成功,則表示該進程還活著。在 Go 中,可以如下完成:
package main import ( "fmt" "log" "os" "strconv" "syscall" ) func main() { process, err := os.FindProcess(12345) if err != nil { fmt.Printf("Failed to find process: %s\n", err) } else { err = process.Signal(syscall.Signal(0)) // Send signal 0 to verify existence if err != nil { fmt.Printf("Process %d does not exist.", 12345) } else { fmt.Printf("Process %d is alive.", 12345) } } }
透過發送零訊號,您可以檢查進程是否已終止或仍在運行。這種方法簡單可靠,提供了有關進程存在的清晰準確的資訊。
以上是如何可靠地檢查 Go 中的進程是否存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!