英文:
exec.Run and argv problem
问题
我想创建一个 exec.Cmd 数组,并将它们连接在一起以创建一个 squid 认证器。当 file 中的命令没有参数时,它可以正常工作。但是当有参数时,它只会读取 EOF。我已经检查了 argv 数组,它的内容是正确的。
代码的相关部分如下:
func initCmd(file *os.File) []* exec.Cmd {
var cmd [MAX_PROC]* exec.Cmd;
var e os.Error
// 初始化配置文件中的命令
environ := os.Environ();
var i int
for i=0; i < MAX_PROC; i++ {
line := getLine(file)
if line == "" { break }
parts := strings.Fields(line)
cmd[i], e = exec.Run(parts[0], parts[1:], environ,
exec.Pipe, exec.Pipe, exec.Pipe)
exitOnError(&e)
}
return cmd[0:i]
}
有什么想法吗?
谢谢。
附注: 如果有帮助的话,完整的程序源代码在 github 上。
英文:
I want to create an array of exec.Cmd and pipe them together to make an squid authenticator. It works when the commands in file have no arguments. With arguments, it only reads EOF. I've checked the argv array and its content is ok.
The relevant portion of the code is:
func initCmd(file *os.File) []* exec.Cmd {
var cmd [MAX_PROC]* exec.Cmd;
var e os.Error
// Initialize the commands in the config file
environ := os.Environ();
var i int
for i=0; i < MAX_PROC; i++ {
line := getLine(file)
if line == "" { break }
parts := strings.Fields(line)
cmd[i], e = exec.Run(parts[0], parts[1:], environ,
exec.Pipe, exec.Pipe, exec.Pipe)
exitOnError(&e)
}
return cmd[0:i]
}
Any ideas?
Thanks.
PS: If it helps, the complete program source is at github.
答案1
得分: 4
参数需要包括arg0。尝试执行exec.Run(parts[0], parts)。
我已经提出了一个关于这个问题的问题,但他们声称这是按预期工作的:
http://code.google.com/p/go/issues/detail?id=428
英文:
The args need to include arg0 also. Try exec.Run(parts[0], parts)
I opened an issue about how this is confusing, but they claim it's working as intended:
http://code.google.com/p/go/issues/detail?id=428
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论