当前位置:   article > 正文

golang linux清屏命令,golang程序在调用linux shell命令后终止

go 清屏

我正在使用root权限执行以下golang程序(代码段):

binary, lookErr := exec.LookPath("auditctl")

if lookErr != nil {

panic(lookErr)

}

env := os.Environ()

args := []string{"auditctl", "-D"}

execErr := syscall.Exec(binary, args, env)

if execErr != nil {

fmt.Println("error")

panic(execErr)

}

fmt.Println("no error")

因为我在系统中没有任何auditctl规则,该命令在终端中打印以下内容.这就像我直接输入shell时一样正常.

No rules

除了不打印“错误”和“无错误”.这意味着golang程序在syscall.Exec之后立即终止.这是怎么发生的?如何在syscall.Exec之后继续执行,因为我还有其他东西要在同一个程序中运行.

解决方法:

syscall.Exec invokes execve(2),它在linux上不会向调用者返回执行,而是replaces当前(Go)进程调用该进程.

正如David Budworth和mkopriva建议的那样..如果你真的想要产生一个单独的进程并在产生后返回你的Go代码;考虑使用exec.Command

标签:shell,linux,go

来源: https://codeday.me/bug/20190717/1487164.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/650594
推荐阅读
相关标签
  

闽ICP备14008679号