Menggunakan Argumen Baris Perintah dengan Go
Kod Go ini berjaya mendapatkan butiran 10 proses menggunakan arahan "atas" dengan argumen khusus:
package main import ( "os/exec" ) func main() { print(top()) } func top() string { app := "/usr/bin/top" cmd := exec.Command(app, "-n", "10", "-l", "2") out, err := cmd.CombinedOutput() if err != nil { return err.Error() + " " + string(out) } value := string(out) return value }
Walau bagaimanapun, hujah "-o cpu" tambahan menyebabkan ralat:
cmd := exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")
Dalam konsol, arahan "top -o cpu -n 10 -l 2" berfungsi seperti yang dimaksudkan. Isunya terletak pada cara hujah "-o" dihantar ke perintah "atas".
Untuk menyelesaikannya, perlu memisahkan hujah secara eksplisit seperti:
cmd := exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")
Ini memastikan bahawa hujah dihantar dengan betul kepada arahan, membolehkannya dilaksanakan dengan betul.
Atas ialah kandungan terperinci Mengapa Menambah '-o cpu' pada My Go `exec.Command` untuk `top` Menyebabkan Ralat dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!