Используйте exec / fork для запуска внешнего процесса - PullRequest
0 голосов
/ 09 октября 2011

Я использую C ++ и пытаюсь запустить команду оболочки во внешнем процессе.Вот код, который у меня есть до сих пор:

pid_t pid;
pid = fork();
if(pid == 0){ 
    execv(args[0],args);
} else {
    wait();
}

Моя первая проблема заключается в том, что мне нужно получить выходные данные от команды оболочки, передаваемой в exec, и я не знаю, как это получить.После запуска приведенного выше кода основная программа также дублирует себя, и я не уверен, почему.

1 Ответ

1 голос
/ 09 октября 2011

args[0] предположительно является именем запущенной программы, поэтому она будет разветвлена, а затем исполнится сама.

Чтобы собрать выходные данные, вам нужно будет организовать их явную передачу. Для этого часто используется вызов Unix pipe().

...