Go中的ForkExec和Su问题

我编写了一个在Go中使用ForkExec的程序。


command := "/bin/su -c '/bin/ls -lh / >/tmp/sC0X3kASz7' joe"


pid, err := os.ForkExec(command, []string{}, os.Environ(), "", []*os.File{nil, cmd.Stdout, cmd.Stderr})

如果您在Shell上执行该命令,您cat /tmp/sC0X3kASz7是否会看到列出的文件。


但是,上面的ForkExec仅创建文件,并且在其中不写入任何内容。知道为什么会这样吗?


走是根。


编辑:command := "/bin/ls -lh / >/tmp/sC0X3kASz7"也不起作用,只是尝试。它甚至没有创建/ tmp文件。


edit2:command := "/bin/bash /tmp/command.txt"我将上述命令放入该txt文件中,再次,从Shell执行,从ForkExec创建文件-不,:(


edit3:解决方案在这里http://code.google.com/p/go/issues/detail?id=428


天涯尽头无女友
浏览 285回答 1
1回答

慕桂英3389331

用户joe是否可能出于某种原因而无法列出/?stderr似乎无处可去。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go