分享
golang exec 命令执行
直立猿 · · 1633 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
Cmd 结构体
命令的操作通过 Cmd结构体实现
type Cmd struct {
// 命令
Path string
// 命令参数
Args []string
// 进程执行环境
Env []string
// 命令执行目录, 默认当前目录
Dir string
// 命令输入
Stdin io.Reader
// 命令输出
Stdout io.Writer
// 命令报错
Stderr io.Writer
ExtraFiles []*os.File
SysProcAttr *syscall.SysProcAttr
Process *os.Process
ProcessState *os.ProcessState
}
创建命令对象
- Command
func Command(name string, arg ...string) *Cmd
cmd, err := exec.Command("echo", "show me")
if err != nil{
fmt.Printf("err: %v", err)
return
}
执行命令
- Run 阻塞进程,直到命令执行结束
- Start 非阻塞执行
- Wait 阻塞进程,等待命令执行结束, 与 Star 配合使用
接收命令输出
var outInfo bytes.Buffer
cmd := exec.Command("echo", "show me")
// 设置接收
cmd.Stdout = &outInfo
// 执行
cmd.Run()
fmt.Println(out.String())
设置命令输入
var outInfo bytes.Buffer
cmd := exec.Command("tr", "a-z", "A-Z")
cmd.Stdin = strings.NewReader("select * from user")
cmd.Stdout = &outInfo
cmd.Run()
fmt.Println(out.String())
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1633 次点击
下一篇:阿里云搭建SS代理教程
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
Cmd 结构体
命令的操作通过 Cmd结构体实现
type Cmd struct {
// 命令
Path string
// 命令参数
Args []string
// 进程执行环境
Env []string
// 命令执行目录, 默认当前目录
Dir string
// 命令输入
Stdin io.Reader
// 命令输出
Stdout io.Writer
// 命令报错
Stderr io.Writer
ExtraFiles []*os.File
SysProcAttr *syscall.SysProcAttr
Process *os.Process
ProcessState *os.ProcessState
}
创建命令对象
- Command
func Command(name string, arg ...string) *Cmd
cmd, err := exec.Command("echo", "show me")
if err != nil{
fmt.Printf("err: %v", err)
return
}
执行命令
- Run 阻塞进程,直到命令执行结束
- Start 非阻塞执行
- Wait 阻塞进程,等待命令执行结束, 与 Star 配合使用
接收命令输出
var outInfo bytes.Buffer
cmd := exec.Command("echo", "show me")
// 设置接收
cmd.Stdout = &outInfo
// 执行
cmd.Run()
fmt.Println(out.String())
设置命令输入
var outInfo bytes.Buffer
cmd := exec.Command("tr", "a-z", "A-Z")
cmd.Stdin = strings.NewReader("select * from user")
cmd.Stdout = &outInfo
cmd.Run()
fmt.Println(out.String())