Fork() waitpid() ????
Résolu
tigrouzzz6
Messages postés
41
Date d'inscription
Statut
Membre
Dernière intervention
-
samuel -
samuel -
Bonjour, qqn pourrais t il m envoyer un bout de code avec un fork et un waitpid() svp que je vois comment ca marche????
je voudrai lancer le script B qd le A se termine...donc je pensais faire un fork() ds A et wait pid() ds B....
est il possible de ne pas toucher au script de la fonction mais d utiliser le nom de la fonction à lancer (ficher.sh)????
merci bcp à ceux qui repondront;.....
je voudrai lancer le script B qd le A se termine...donc je pensais faire un fork() ds A et wait pid() ds B....
est il possible de ne pas toucher au script de la fonction mais d utiliser le nom de la fonction à lancer (ficher.sh)????
merci bcp à ceux qui repondront;.....
A voir également:
- Waitpid man
- Slender man jeu - Télécharger - Tir FPS
- Net set man - Télécharger - Divers Réseau & Wi-Fi
- Man putnbr - Forum Programmation
- Demontage autoradio man tgx - Forum Autoradio
- Comment invoquer le slender man - Forum Minecraft
8 réponses
Salut,
Tu ne peux pas utiliser fork et waitpid dans un script sh. Ces fonctions s'utilisent dans un programme compilé, la plupart du temps en C, ou alors dans un langage de script plus puissant comme le python ou le perl.... Bref dans un langage qui a accés aux fonctions de base du système.
Tu peux faire deux choses sachant que A et B sont des scripts shell:
_ Dans B, tu appelles A au début et là forcément le reste de B s'executera après A.
_ Tu crées un script C qui appelle A puis B.
_ Ou alors tu fais un programme avec fork et waitpid qui execute ces scripts. Le père crées un fils de lui-même (fork) qui executera A. Dans le père, avec waitpid tu attends que le fils soit terminé, puis tu lances B:
Tu ne peux pas utiliser fork et waitpid dans un script sh. Ces fonctions s'utilisent dans un programme compilé, la plupart du temps en C, ou alors dans un langage de script plus puissant comme le python ou le perl.... Bref dans un langage qui a accés aux fonctions de base du système.
Tu peux faire deux choses sachant que A et B sont des scripts shell:
_ Dans B, tu appelles A au début et là forcément le reste de B s'executera après A.
_ Tu crées un script C qui appelle A puis B.
_ Ou alors tu fais un programme avec fork et waitpid qui execute ces scripts. Le père crées un fils de lui-même (fork) qui executera A. Dans le père, avec waitpid tu attends que le fils soit terminé, puis tu lances B:
#include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main() { pid_t pid_fils; int statut; if( (pid_fils=fork()) == 0){ //On est dans le fils execl("/bin/bash", "/bin/bash", "./A", NULL); } else if(pid_fils == -1){ //Erreur } else{ //On est dans le parent if(waitpid(pid_fils, &statut, 0) == -1){ //Erreur } else{// Le fils s'est terminé execl("/bin/bash", "/bin/bash", "./B", NULL); } } return 0; }
Je crois plutôt que wait attend la mort d'un de ses fils mais n'attend pas la mort de tous ces fils.
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/wait.2.html
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/wait.2.html
Hello
L'équivalent en shell:
commande_en_backgroud &
wait
wait attends toutes les tâches en backround ou wait PID pour attendre une tâche spécifique
L'équivalent en shell:
commande_en_backgroud &
wait
wait attends toutes les tâches en backround ou wait PID pour attendre une tâche spécifique
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci bcp kilian pour les infos..j connais pa le execl mais j irai faire un petit man pour comprendre..j suppose que ca execute...
merci en tout cas
@bientot
merci en tout cas
@bientot