Go にプロセスが存在するかどうかを確実に確認するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-17 09:47:03
オリジナル
566 人が閲覧しました

How to Reliably Check if a Process Exists in Go?

Go にプロセスが存在するかどうかを確認する

Go でプロセスを操作する場合、特定の PID を持つ特定のプロセスが存在するかどうかを知ることが重要です。 os.FindProcess を使用しても、必ずしも決定的な情報が得られるとは限りません。これに対処するために、Go はプロセスの存在を確認するためのシンプルかつ効率的な方法を提供します。

UNIX スタイルのシグナル検証

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート