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 № 1args[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.