|  |      1ChristopherWu      2018-02-06 16:40:30 +08:00 可以。 | 
|  |      2ChristopherWu      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) } ``` | 
|      3praynise OP @ChristopherWu 没有看懂您的意思,可以麻烦详细解释如何使用./来执行吗? 先付上我自己的理解:Command 第一个参数为 path,实际上是通过$PATH 环境变量进行检索,看第一个参数中的内容是否在$PATH 变量内,如果存在,则视为可执行,如果不存在,会直接返回错误。此参数为必填参数 第二个参数开始,则为 path 所需要的参数,非必填,但是如果填写了,必须是 PATH 的参数 基于这个理解,首先./程序,程序并不一定在$PATH 中,使用 exec.Command('程序名')的方式会报错:未找到 PATH 中有可执行文件。如果将程序加入 path,再执行 exec.Command('程序名'),则会提示 exec format error。同时 name 参数中直接输入“./程序名” 也没法进行操作 麻烦您了,谢谢 | 
|  |      4ChristopherWu      2018-02-07 10:08:55 +08:00 | 
|  |      5goofool      2018-02-07 18:19:14 +08:00 直接程序名字就可以了吧,不需要加./ | 
|  |      6nekoyaki      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`)这样直接传进去就行。 |