nama proses pertanyaan golang

WBOY
Lepaskan: 2023-05-13 09:31:36
asal
1694 orang telah melayarinya

Golang ialah bahasa pengaturcaraan berkuasa yang menyokong panggilan API peringkat rendah untuk banyak sistem pengendalian. Sebagai pengaturcara Golang, anda selalunya perlu mengurus dan memantau proses yang berjalan pada sistem pengendalian. Dalam artikel ini, kami akan meneroka cara untuk menanyakan nama proses menggunakan Golang.

1. Definisi nama proses

Proses merujuk kepada atur cara yang sedang dilaksanakan dalam sistem pengendalian. Setiap proses mempunyai ID proses unik (PID) dan nama proses. Nama proses ialah pengecam proses dalam sistem, biasanya nama aplikasi. Contohnya, "chrome.exe" dalam sistem Windows mewakili tika penyemak imbas Google Chrome yang sedang berjalan.

Dalam sistem Linux, nama proses bukan sahaja nama aplikasi, tetapi juga termasuk status dan maklumat lain proses tersebut. Sebagai contoh, "sshd: user@pts/0" menunjukkan proses pelayan SSH sedang berjalan yang berkomunikasi dengan terminal operasi (pts/0) pengguna bernama "pengguna".

2. Tanya nama proses

Untuk menanyakan nama proses yang sedang berjalan, kita perlu menggunakan pakej perisian os dan syscall Golang. Pakej perisian syscall menyediakan antara muka panggilan sistem yang boleh mengakses fungsi asas sistem pengendalian.

1. Dapatkan ID proses

Kita boleh menggunakan pakej os Golang untuk mendapatkan PID proses semasa. Berikut ialah contoh kod:

package main

import (
    "fmt"
    "os"
)

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

2. Gunakan syscall untuk mendapatkan nama proses

Kita boleh menggunakan fungsi Getpgid bagi pakej perisian syscall untuk mendapatkan PGID (Process Group ID) bagi proses yang ditentukan. Kami kemudiannya boleh menggunakan fail stat dalam sistem fail /proc untuk menghuraikan nama dan status proses.

Berikut ialah contoh kod:

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)
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi fmt.Fscanf untuk membaca nama proses daripada fail stat. Fungsi ini serupa dengan fungsi fmt.Scanf, tetapi membolehkan kami menentukan rentetan format untuk membaca data.

Apabila membaca nama proses, kita perlu mengelilingi nama dengan kurungan kerana terdapat kurungan di sekeliling nama dalam format fail stat.

3. Ringkasan

Dalam artikel ini, kami mempelajari cara menggunakan Golang untuk menanyakan nama proses. Kami menggunakan pakej os dan syscall untuk mendapatkan PID proses semasa dan PGID proses yang ditentukan, dan kemudian menggunakan fail stat dalam sistem fail /proc untuk menghuraikan nama dan status.

Ciri hebat Golang membolehkan kami mengurus dan memantau proses yang berjalan pada sistem pengendalian dengan lebih mudah. Jika anda ingin mempelajari lebih lanjut teknologi pengurusan proses Golang, anda boleh menyemak dokumen dan tutorial yang berkaitan, dan merujuk kepada dokumentasi rasmi Golang dan contoh kod.

Atas ialah kandungan terperinci nama proses pertanyaan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!