Heim > Backend-Entwicklung > Golang > So führen Sie die cmd-Befehlszeile in Golang aus

So führen Sie die cmd-Befehlszeile in Golang aus

藏色散人
Freigeben: 2020-12-04 14:48:19
nach vorne
8437 Leute haben es durchsucht

Die folgende Kolumne stellt Ihnen die Golang-Tutorial-Spalte vor, wie man die cmd-Befehlszeile ausführt. Ich hoffe, dass sie für Freunde hilfreich ist, die sie benötigen!

1. Golang verwendet die os/exec-Befehlsmethode, um Systembefehle auszuführen:

func Command(name string, arg ...string) *Cmd
Nach dem Login kopieren
So führen Sie die cmd-Befehlszeile in Golang ausDer erste Parameter ist der Befehlsname, und die folgenden Parameter können mehrere Befehlsparameter haben.

cmd := exec.Command("ls", "-a")
if stdout, err := cmd.StdoutPipe(); err != nil {     //获取输出对象,可以从该对象中读取输出结果
    log.Fatal(err)
}
defer stdout.Close()   // 保证关闭输出流
 
if err := cmd.Start(); err != nil {   // 运行命令
    log.Fatal(err)
}
 
if opBytes, err := ioutil.ReadAll(stdout); err != nil {  // 读取输出结果    
    log.Fatal(err)
} else {
    log.Println(string(opBytes))
}
Nach dem Login kopieren

2. Leiten Sie die Ausgabe des Befehls in eine Datei um:

 stdout, err := os.OpenFile("stdout.log", os.O_CREATE|os.O_WRONLY, 0600)   
    if err != nil {
        log.Fatalln(err)
    }
    defer stdout.Close()
    cmd.Stdout = stdout   // 重定向标准输出到文件
    // 执行命令
    if err := cmd.Start(); err != nil {
        log.Println(err)
    }
Nach dem Login kopieren

3. Der Unterschied zwischen den Start- und Run-Methoden von cmd:

Start-Ausführung wartet nicht auf den Abschluss des Befehls und Run wird blockiert Warten auf die Ausführung des Befehls. Die Ausführung der

cmd := exec.Command("sleep", "10")
err := cmd.Run()  //执行到此处时会阻塞等待10秒
err := cmd.Start()   //如果用start则直接向后运行
if err != nil {
    log.Fatal(err)
}
err = cmd.Wait()   //执行Start会在此处等待10秒
Nach dem Login kopieren

Command-Methode schlägt möglicherweise fehl und meldet einen Fehler: Datei existiert nicht. Wenn Sie jedoch den Start eines DOS-Fensters (Windows-Plattform) auf die folgende Weise erzwingen, ist die Ausführung ebenfalls erfolgreich.

Zwingen Sie auf der Windows-Plattform das Öffnen des DOS-Fensters und führen Sie den Befehlszeilenbefehl aus:

cmdLine := pscp -pw pwd local_filename user@host:/home/workspace   
cmd := exec.Command("cmd.exe", "/c", "start " + cmdLine)
err := cmd.Run()
fmt.Printf("%s, error:%v \n", cmdLine, err)
Nach dem Login kopieren
4. 如果命令名称和参数写成一个字符串传给5. Blenden Sie das eigene Cmd-Fenster des Golang-Programms aus, wenn Sie es ausführen:

 go build -ldflags -H=windowsgui
Nach dem Login kopieren

6 um das cmd-fenster auszublenden:

cmd := exec.Command("sth")
 if runtime.GOOS == "windows" {
     cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
 }
 err := cmd.Run()
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo führen Sie die cmd-Befehlszeile in Golang aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage