1
ChristopherWu 2018-02-06 16:40:30 +08:00
可以。
|
2
ChristopherWu 2018-02-06 16:41:02 +08:00
```
package main import ( "log" "os/exec" ) func main() { cmd := exec.Command("sleep", "1") log.Printf("Running command and waiting for it to finish...") err := cmd.Run() log.Printf("Command finished with error: %v", err) } ``` |
3
praynise OP @ChristopherWu 没有看懂您的意思,可以麻烦详细解释如何使用./来执行吗?
先付上我自己的理解:Command 第一个参数为 path,实际上是通过$PATH 环境变量进行检索,看第一个参数中的内容是否在$PATH 变量内,如果存在,则视为可执行,如果不存在,会直接返回错误。此参数为必填参数 第二个参数开始,则为 path 所需要的参数,非必填,但是如果填写了,必须是 PATH 的参数 基于这个理解,首先./程序,程序并不一定在$PATH 中,使用 exec.Command('程序名')的方式会报错:未找到 PATH 中有可执行文件。如果将程序加入 path,再执行 exec.Command('程序名'),则会提示 exec format error。同时 name 参数中直接输入“./程序名” 也没法进行操作 麻烦您了,谢谢 |
4
ChristopherWu 2018-02-07 10:08:55 +08:00
|
5
goofool 2018-02-07 18:19:14 +08:00
直接程序名字就可以了吧,不需要加./
|
6
nekoyaki 2018-02-23 10:03:07 +08:00 1
我猜可能楼主和我之前是一个想法,看看这个: https://github.com/nagae-memooff/goutils/blob/master/utils.go
仅供参考,用里头的 Sysexec,就可以像直接在 shell 里敲命令一样的方式直接把字符串传进去了。 执行的时候的环境变量也是你这个 go 用户,在控制台里的时候的环境变量。不过最好用绝对路径,相对路径的比较复杂,三句两句说不清。 比如 Sysexec(`history|grep iperf`)这样直接传进去就行。 |