Я хочу создать массив exec.Cmd и соединить их вместе, чтобы сделать аутентификатор кальмаров. Он работает, когда в командах файл нет аргументов. С аргументами он читает только EOF. Я проверил массив argv, и его содержимое в порядке.exec.Run and argv problem
Соответствующая часть кода:
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
Это уродливо, потому что они более или менее скопировали поведение стандартной функциональности библиотеки C, которая также почему они утверждают, что он работает по назначению. Фактически, они, вероятно, просто называют один из многих вариантов функции C «exec» под капотом. –