【发布时间】:2017-03-22 22:12:09
【问题描述】:
我正在以 root 权限执行以下 golang 程序 (sn-p):
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 之后继续执行,因为我还有其他东西要在同一个程序中运行。
【问题讨论】:
-
您是否尝试过使用
os/exec.Cmd来完成您想要完成的任务?