Je suis en train d'exécuter wget dans un processus enfant séparé que je Duplication avec une fourchette comme suit:execl avec wget, processus enfant, unix - pourquoi ça marche pas
int child;
pid_t child = fork();
if (child == 0) { // no errors
bool done = false; // set to false
while (!done) { // while not true do
execl("wget", "someurl", NULL);
done = true; // since dl finished
}
cout << "DL Finished\n"; // to see if child was successful
}
else if (child != 0) { // errors
Toute erreur apparente que vous peut signaler dans ce code? Si c'est important, c'est dans une fonction vide que j'appelle principal ce qui se passe est qu'il ne télécharge pas et il affiche "DL Finished", mais pas exécuter wget - alors le terminal prend le relais.
Ceci est exécuté sur Ubuntu 12.04.2 LTS. J'ai précédemment dans la même fonction vide utilisé enfant pour exécuter "ls" qui fonctionne correctement, c'est-à-dire que je lui dis tout le chemin de ls (/ bin/ls). J'ai lu que ne pas fournir le chemin complet le ferait rechercher la commande, qui est ce que je veux.
Essayez d'utiliser le chemin complet de wget dans l'appel exec. – suspectus
Lorsque 'fork' renvoie une valeur non nulle, ce n'est pas nécessairement une erreur. La plupart du temps c'est l'identifiant de processus du nouveau processus-enfant. –