Bahasa Go ialah bahasa pengaturcaraan sumber terbuka Ia bukan sahaja mempunyai perpustakaan standard yang kaya dan sokongan pengaturcaraan serentak yang cekap, tetapi juga mempunyai perpustakaan pemprosesan proses yang berkuasa - os/exec. Dalam artikel ini, kami akan menerangkan cara membuat pertanyaan proses menggunakan perpustakaan os/exec.
Mula-mula, mari kita lihat contoh mudah:
package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("ps", "-ef") output, err := cmd.Output() if err != nil { fmt.Println(err) return } fmt.Println(string(output)) }
Dalam contoh di atas, kami mencipta objek Perintah menggunakan perpustakaan os/exec dan melaksanakan arahan ps -ef . Kaedah Output objek Perintah menangkap output standard proses ke dalam tatasusunan bait dan mengembalikannya.
Jika anda menjalankan kod ini, anda akan melihat senarai semua proses yang berjalan pada sistem Linux anda. Tetapi bagaimana jika anda hanya mahu mencari proses bernama "myprocess"?
Sebelum meneruskan, kita perlu mengetahui format output arahan ps. Arahan ps mengeluarkan kandungan dalam format berikut:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:38 ? 00:00:01 /sbin/init root 2 0 0 10:38 ? 00:00:00 [kthreadd]
Dalam format ini, lajur kedua ialah ID proses dan lajur kesepuluh ialah nama proses. Kita boleh menggunakan lajur ini apabila menanyakan proses.
Sekarang, mari kita ubah suai contoh sebelumnya untuk hanya menunjukkan proses bernama "myprocess":
package main import ( "fmt" "os/exec" "strings" ) func main() { cmd := exec.Command("ps", "-ef") output, err := cmd.Output() if err != nil { fmt.Println(err) return } lines := strings.Split(string(output), "\n") for _, line := range lines { if strings.Contains(line, "myprocess") { fmt.Println(line) } } }
Dalam contoh ini, kita mula-mula menggunakan rentetan.Fungsi Split untuk membahagikan senarai proses kepada Baris demi baris teks. Selepas itu, kami mengulangi setiap baris dan mencari baris bernama "myprocess" di dalamnya. Jika dijumpai, kami mencetak baris ini.
Sudah tentu, contoh ini hanyalah contoh. Dalam aplikasi sebenar, anda mungkin perlu menapis proses berdasarkan keadaan yang berbeza. Nasib baik, perpustakaan os/exec menyediakan semua alat yang diperlukan.
Sekarang, jika anda menjalankan kod ini, dan anda mempunyai proses yang dipanggil "myprocess" berjalan, anda akan melihat output yang serupa dengan yang berikut:
myuser 1234 1 0 Apr09 ? 00:00:00 myprocess
Di sini, kami memproses Contoh mudah menunjukkan cara menggunakan perpustakaan os/exec untuk menanyakan proses. Sudah tentu, os/exec boleh melakukan lebih daripada itu. Tidak kira betapa rumitnya keperluan anda, anda boleh mempercayainya untuk menyediakan alatan yang diperlukan untuk mengendalikan proses tersebut.
Atas ialah kandungan terperinci Cara golang menggunakan perpustakaan os/exec untuk menanyakan proses. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!