1 Star 1 Fork 1

up-zero/gotool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
exec.go 1.07 KB
一键复制 编辑 原始数据 按行查看 历史
GetcharZp 提交于 2023-08-14 18:26 +08:00 . feat 带通知的运行命令
package gotool
import (
"bufio"
"bytes"
"os/exec"
)
// ExecCommand 运行命令
//
// name: 命令名称
// arg: 命令参数
func ExecCommand(name string, arg ...string) error {
cmd := exec.Command(name, arg...)
return execCmd(cmd, nil)
}
// ExecCommandWithNotify 带通知的运行命令
//
// name: 命令名称
// arg: 命令参数
func ExecCommandWithNotify(ch chan string, name string, arg ...string) error {
cmd := exec.Command(name, arg...)
return execCmd(cmd, ch)
}
// execCmd 执行命令
//
// cmd: 命令
// ch: 输出通道
func execCmd(cmd *exec.Cmd, ch chan string) error {
var stderr bytes.Buffer
cmd.Stderr = &stderr
stdout, err := cmd.StdoutPipe()
if err != nil {
return err
}
if err := cmd.Start(); err != nil {
return err
}
scanner := bufio.NewScanner(stdout)
for scanner.Scan() {
text := scanner.Text()
if ch != nil {
ch <- text
}
}
if err := scanner.Err(); err != nil {
if ch != nil {
ch <- err.Error()
}
return err
}
if err := cmd.Wait(); err != nil {
if ch != nil {
ch <- stderr.String()
}
return err
}
return nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/up-zero/gotool.git
git@gitee.com:up-zero/gotool.git
up-zero
gotool
gotool
main

搜索帮助