## 问题
执行这个函数时``execShell("nohup ./hatgo &")``,**&**被``exec.Command``自动屏蔽了,导致最后应用无法后台运行 ,麻烦大家给我指教一下。
```
func execShell(s string) {
cmd := exec.Command("sh", "-c", s)
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
checkErr(err, out.String())
}
```
bug.....
你现要了解&有什么用。
带&和不带&,其实就相当于 go里你是用run还是start来开始程序。
或者直接go起个协助程来跑就可以了。
#1
更多评论
jarlyyn@debian:/tmp/go$ cat test.go
package main
import (
"fmt"
"os/exec"
"time"
)
func main() {
cmd := exec.Command("sh", "-c", "tail -f 1.txt")
go func() {
fmt.Println(cmd.Run())
}()
time.Sleep(time.Second)
}
jarlyyn@debian:/tmp/go$ ps -A|grep tail
jarlyyn@debian:/tmp/go$ go run test.go
jarlyyn@debian:/tmp/go$ ps -A|grep tail
14758 pts/5 00:00:00 tail
jarlyyn@debian:/tmp/go$
#3