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) }
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) }
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!