3
我想创建一个exec.Cmd数组,并将它们组合在一起以构成一个鱿鱼身份验证器。它在文件中的命令没有参数时有效。有了参数,它只能读取EOF。我检查过argv数组,它的内容没问题。exec.Run和argv问题
代码的相关部分是:
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]
}
任何想法? 谢谢。
PS:如果有帮助,完整的程序源代码位于github。
现在,这是丑陋的API设计。有了关键字参数,他们可以调整更好的子进程:http://docs.python.org/library/subprocess.html#subprocess.Popen – Tobu 2010-01-27 18:38:08
这很丑陋,因为它们或多或少复制了标准C库功能的行为,也是为什么他们声称它按预期工作。事实上,他们可能只是在引擎盖下调用C函数“exec”的众多变体之一。 – 2010-01-27 21:45:03