补充 外部程序绑定标准输入输出 和 外部参考资料.
Signed-off-by: chen.yang <chen.yang@yuzhen-iot.com>
This commit is contained in:
parent
d07f5e449a
commit
65aa0c6fd1
|
@ -31,7 +31,30 @@ exec.Cmd 有 Start、Wait、Run、Output 等方法,其中
|
||||||
* Run:阻塞进程,直到命令执行结束,相当于 Start+Wait 的组合;
|
* Run:阻塞进程,直到命令执行结束,相当于 Start+Wait 的组合;
|
||||||
* Output:阻塞进程,直到命令执行结束,比 Run 方法多返回程序的 stdout。
|
* Output:阻塞进程,直到命令执行结束,比 Run 方法多返回程序的 stdout。
|
||||||
|
|
||||||
## 2.带 Cancel 的外部命令调用
|
## 2.外部程序绑定标准输入输出
|
||||||
|
|
||||||
|
```go
|
||||||
|
func MakeCmd(name string, arg ...string) *exec.Cmd {
|
||||||
|
cmd := exec.Command(name, arg...)
|
||||||
|
// 绑定标准输入输出
|
||||||
|
cmd.Stdin = os.Stdin
|
||||||
|
cmd.Stdout = os.Stdout
|
||||||
|
cmd.Stderr = os.Stderr
|
||||||
|
cmd.Env = append(cmd.Env, os.Getenv("USER"))
|
||||||
|
cmd.Env = append(cmd.Env, os.Getenv("HOME"))
|
||||||
|
cmd.Env = append(cmd.Env, os.Getenv("SHELL"))
|
||||||
|
cmd.Env = append(cmd.Env, os.Getenv("LOGNAME"))
|
||||||
|
cmd.Env = append(cmd.Env, os.Getenv("PATH"))
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
cmd := MakeCmd("ls", "-l", "./")
|
||||||
|
cmd.Run()
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.带 Cancel 的外部命令调用
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func MakeCmdWithCancel(name string, arg ...string) (*exec.Cmd, context.CancelFunc) {
|
func MakeCmdWithCancel(name string, arg ...string) (*exec.Cmd, context.CancelFunc) {
|
||||||
|
@ -58,3 +81,7 @@ func main() {
|
||||||
sleep.Wait()
|
sleep.Wait()
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 4.外部参考资料
|
||||||
|
|
||||||
|
1. [Go标准库os/exec使用指南](https://honeypps.com/golang/go-standard-lib-os-exec-guide/)
|
||||||
|
|
Loading…
Reference in New Issue