ホームページ  >  記事  >  バックエンド開発  >  golang クエリプロセス名

golang クエリプロセス名

WBOY
WBOYオリジナル
2023-05-13 09:31:361710ブラウズ

Golang は、多くのオペレーティング システムの低レベル API 呼び出しをサポートする強力なプログラミング言語です。 Golang プログラマーは、オペレーティング システム上で実行されているプロセスを管理および監視する必要があることがよくあります。この記事では、Golang を使用してプロセス名をクエリする方法を説明します。

1. プロセス名の定義

プロセスとは、オペレーティング システム上で実行されるプログラムを指します。各プロセスには、一意のプロセス ID (PID) とプロセス名があります。プロセス名はシステム内のプロセスの識別子で、通常はアプリケーションの名前です。たとえば、Windows システムの「chrome.exe」は、Google Chrome ブラウザの実行中のインスタンスを表します。

Linux システムでは、プロセス名にはアプリケーションの名前だけでなく、プロセスのステータスやその他の情報も含まれます。たとえば、「sshd: user@pts/0」は、「user」という名前のユーザーの操作端末 (pts/0) と通信している実行中の SSH サーバー プロセスを示します。

2. プロセス名をクエリする

実行中のプロセス名をクエリするには、Golang の OS と syscall ソフトウェア パッケージを使用する必要があります。 syscall ソフトウェア パッケージは、オペレーティング システムの基礎となる機能にアクセスできるシステム コール インターフェイスを提供します。

1. プロセス ID を取得する

Golang の OS ソフトウェア パッケージを使用して、現在のプロセスの PID を取得できます。以下はサンプル コードです:

package main

import (
    "fmt"
    "os"
)

func main() {
    pid := os.Getpid()
    fmt.Printf("Current process ID: %d
", pid)
}

2. syscall を使用してプロセス名を取得します

syscall ソフトウェア パッケージの Getpgid 関数を使用して、プロセスの PGID (プロセス グループ ID) を取得できます。指定されたプロセス。次に、/proc ファイル システム内の stat ファイルを使用して、プロセスの名前とステータスを解析できます。

以下はサンプル コードです:

package main

import (
    "fmt"
    "os"
    "syscall"
)

func getProcessName(pid int) (string, error) {
    pgid, err := syscall.Getpgid(pid)
    if err != nil {
        return "", err
    }
    statFile := fmt.Sprintf("/proc/%d/stat", pgid)
    f, err := os.Open(statFile)
    if err != nil {
        return "", err
    }
    defer f.Close()
    var comm string
    fmt.Fscanf(f, "%d (%s)", &pgid, &comm)
    return comm, nil
}

func main() {
    pid := os.Getpid()
    name, err := getProcessName(pid)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("PID %d, Process name: %s
", pid, name)
}

上記のコードでは、fmt.Fscanf 関数を使用して stat ファイルからプロセス名を読み取ります。この関数は fmt.Scanf 関数に似ていますが、データを読み取るための形式文字列を指定できます。

stat ファイル形式では名前が括弧で囲まれているため、プロセス名を読み取るときは括弧を使用して名前を囲む必要があります。

3. 概要

この記事では、Golang を使用してプロセス名をクエリする方法を学びました。 os および syscall パッケージを使用して現在のプロセスの PID と指定されたプロセスの PGID を取得し、/proc ファイル システム内の stat ファイルを使用して名前とステータスを解析します。

Golang の強力な機能により、オペレーティング システム上で実行されているプロセスをより簡単に管理および監視できるようになります。 Golang のプロセス管理テクノロジをさらに詳しく知りたい場合は、関連するドキュメントやチュートリアルを確認し、Golang の公式ドキュメントやコード例を参照してください。

以上がgolang クエリプロセス名の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。