/ / Użyj exec / fork do uruchomienia zewnętrznego procesu - c ++, exec, fork

Użyj exec / fork do uruchomienia zewnętrznego procesu - c ++, exec, fork

Używam C ++ i próbuję uruchomić polecenie powłoki w procesie zewnętrznym. Oto kod, który do tej pory miałem:

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

Moim pierwszym problemem jest to, że muszę uzyskać dane wyjściowez polecenia powłoki przekazanego do exec i nie wiem jak to uzyskać. Po uruchomieniu kodu powyżej główny program również się duplikuje i nie jestem pewien dlaczego.

Odpowiedzi:

1 dla odpowiedzi № 1

args[0] jest prawdopodobnie nazwą uruchomionego programu, więc rozwidla się, a następnie uruchamia się.

Aby zebrać dane wyjściowe, musisz je przekazać jawnie. Unix pipe() połączenie jest często używane do tego.