Maison > développement back-end > Golang > le corps du texte

Comment exécuter la ligne de commande cmd dans Golang

藏色散人
Libérer: 2020-12-04 14:48:19
avant
8322 Les gens l'ont consulté

La colonne suivante du tutoriel Golang vous présentera la méthode d'exécution de la ligne de commande cmd dans Golang. J'espère que cela vous aidera si vous en avez besoin.

Comment exécuter la ligne de commande cmd dans Golang

1. Golang exécute les commandes système en utilisant la méthode de commande os/exec :

func Command(name string, arg ...string) *Cmd
Copier après la connexion

Le premier paramètre est le nom de la commande, et les paramètres suivants peuvent avoir paramètre de plusieurs commandes.

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))
}
Copier après la connexion

2. Redirigez la sortie de la commande vers un fichier :

 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)
    }
Copier après la connexion

3. La différence entre les méthodes Start et Run de cmd :

<🎜. > Démarrer l'exécution n'attendra pas la fin de la commande et Run bloquera l'attente de la fin de la commande. La méthode

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

Command peut échouer à s'exécuter et signaler une erreur : le fichier n'existe pas. Cependant, si vous forcez le démarrage d'une fenêtre DOS (plateforme Windows) de la manière suivante pour l'exécution, elle le sera également. réussir. 4. 如果命令名称和参数写成一个字符串传给

Sur la plate-forme Windows, forcez l'apparition de la fenêtre DOS pour exécuter la ligne de commande :

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)
Copier après la connexion

5. Masquez la propre fenêtre cmd du programme Golang lors de l'exécution :


 go build -ldflags -H=windowsgui
Copier après la connexion
.

6. Windows Sur la plateforme, exécutez la commande système pour masquer la fenêtre cmd :

cmd := exec.Command("sth")
 if runtime.GOOS == "windows" {
     cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
 }
 err := cmd.Run()
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal