go语言执行shell命令的一个bug

EddieChan1993 · · 2733 次点击
我也遇到了这个问题,已经解决 首先,这不是一个bug 其次,这个现象是因为你go程序运行( 主程A),启动shell子进程B, A是B的父进程,父进程退出,B就跟着退出了,B并没有被init 1进程接管,这是导致这个问题的原因 解决方案: 1. nohup命令是为了让程序忽略hangup 信号, 这里这样使用不太合适。我们的目的是为了A退出后,B能够被init 1进程接管,所以可以换一种方式,修改shell命令,使用setsid让其后台运行。比如: setsid tail -f 1.txt 参考文档: https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 2. go程序exec有一种方式, 可以通过在Cmd.SysProcAttr字段中将Setpgid设置为true来实现, 这种方式我没有实际尝试,楼主可以自行尝试下,然后可以分享出来,原理是一样的
#8
更多评论
bug..... 你现要了解&有什么用。 带&和不带&,其实就相当于 go里你是用run还是start来开始程序。 或者直接go起个协助程来跑就可以了。
#1
你没理解到我的意思,我既然选择shell来执行,肯定有要我的用处嘛,我是用来后台运行go应用,通过这个命令实现常住。
#2