exec.Run和argv问题

时间:2010-01-27 15:37:27

标签: go

我想创建一个exec.Cmd数组并将它们连接在一起以制作一个squid身份验证器。当 file 中的命令没有参数时,它可以工作。有了参数,它只能读取 EOF 。我检查了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

1 个答案:

答案 0 :(得分:4)

args也需要包含arg0。尝试exec.Run(部件[0],部件)

我打开了一个关于这是如何令人困惑的问题,但他们声称它按预期工作: http://code.google.com/p/go/issues/detail?id=428