首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在golang中有没有办法在一个进程中运行多个命令"os/exec“?

在golang中有没有办法在一个进程中运行多个命令"os/exec“?
EN

Stack Overflow用户
提问于 2018-06-10 02:07:09
回答 1查看 2.9K关注 0票数 0

我想在一个进程中运行"os/exec“中的多个命令,正如你在下面看到的,像"cd”这样的命令不起作用。

代码语言:javascript
运行
复制
func main()  {
cmd := exec.Command("ls")
cmdOutput := &bytes.Buffer{}
cmd.Stdout = cmdOutput
err := cmd.Run()
fmt.Print(string(cmdOutput.Bytes()))

fmt.Println("..........  cd   .........")
cdOutput := &bytes.Buffer{}
cdcomand:=exec.Command("cd","model")
cdcomand.Stdout = cdOutput
err = cdcomand.Run()
fmt.Print(string(cdOutput.Bytes()))
fmt.Println(".......... ls .........")
lsOutput := &bytes.Buffer{}
lscmd:=exec.Command("ls")
lscmd.Stdout = lsOutput

err = lscmd.Run()
if err != nil {
    os.Stderr.WriteString(err.Error())
}
fmt.Print(string(lsOutput.Bytes()))}

我尝试了另一种方法:

代码语言:javascript
运行
复制
 package main
代码语言:javascript
运行
复制
import (
"os/exec"
"bytes"
"os"
"fmt"
)

func main()  {
cmd := exec.Command("ls")
cmdOutput := &bytes.Buffer{}
cmd.Stdout = cmdOutput
err := cmd.Run()
fmt.Print(string(cmdOutput.Bytes()))

fmt.Println("..........  cd and ls   .........")
cdOutput := &bytes.Buffer{}
cdcomand:= exec.Command("sh", "-c", "ls && cd model")
cdcomand.Stdout = cdOutput
err = cdcomand.Run()
fmt.Print(string(cdOutput.Bytes()))
fmt.Println(".......... ls .........")
lsOutput := &bytes.Buffer{}
lscmd:=exec.Command("ls")
lscmd.Stdout = lsOutput

err = lscmd.Run()
if err != nil {
    os.Stderr.WriteString(err.Error())
}
fmt.Print(string(lsOutput.Bytes()))
}

它也不起作用。

在命令中,document写道:

Cmd在调用其Run、Output或CombinedOutput方法后不能重用。

我已经搜索了所有的but和文档来寻找这样做的方法,但是我没有找到任何东西。在Executing external commands in Go文章和advanced command execution in Go with os中没有解决方案

每个cmd命令在不同进程中执行,因此像"cd“这样的命令不会更改目录。

在golang中有没有办法在一个进程中运行多个命令"os/exec“?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50777163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档