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 中国語 Web サイトの他の関連記事を参照してください。