Attente de la fin d'un processus sous Unix

laetitiavincent Messages postés 61 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 19 janvier 2007 - 14 déc. 2006 à 22:07
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 - 15 déc. 2006 à 15:58
Bonsoir tout le monde
Voilà je voudrais lancer un processus et attendre qu'il soit fini pour que le programme continue. Sous windows, ca ne me pose pas de problème sous windows avec la création du processus et une boucle sur la fin de ce processus
Mais je n'y arrive pas sous Unix . Quelqu'un pourrait me dire comment on fait ?

Merci par avance

 Laetitia

6 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
15 déc. 2006 à 00:22
Salut:

Sous unix, il existe la primitive wait.
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
15 déc. 2006 à 14:16
Salut,
je dirais meme plus il existe aussi waitpid.

Allé, une petite doc, c'est noel :
<li>La fonction wait suspend l’exécution du processus courant jusqu’à ce qu’un enfant se termine, ou jusqu’à ce qu’un signal à intercepter arrive.  Si un processus fils s’est déjà terminé au moment de l’appel (il  est  devenu  "zombie"), la fonction revient immédiatement.  Toutes les ressources utilisées par le fils sont libérées.</li><li>La fonction  waitpid suspend l’exécution du processus courant jusqu’à ce que le processus fils numéro pid se termine, ou jusqu’à ce qu’un signal à intercepter arrive. Si le fils mentionné par pid s’est déjà terminé au  moment de  l’appel  (il  est devenu "zombie"), la fonction revient immédiatement.  Toutes les ressources utilisées par le fils sont libérées.
</li>

<hr size="2" width="100%" />TuRn3r
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 déc. 2006 à 15:02
Salut,

euh... juste par curiosité, vous lancez comment le processus ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
15 déc. 2006 à 15:13
Avec ce bon vieu fork() ou clone();

<hr size="2" width="100%" />TuRn3r
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 déc. 2006 à 15:14
Salut,

euh... ça ça dédouble ton programme non ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
15 déc. 2006 à 15:58
En gros oui, extrait du man:

clone  crée  un  nouveau  processus,  exactement  comme  le  fait fork(2).  clone est une fonction de bibliothèque s’appuyant sur l’appel-système sys_clone sous-jacent.

Contrairement  à  fork(2), clone permet le partage d’une partie du contexte d’exécution entre le processus fils et le processus appelant. Le partage peut s’appliquer sur l’espace mémoire, sur la table des descripteurs  de fichiers,  la  table des gestionnaires de signaux... 

L’appel système clone est principalement utilisé pour permettre l’implémentation des threads :  un  programme  est scindé en plusieurs lignes de contrôle, s’exécutant simultanément dans un espace mémoire partagé.

<hr size="2" width="100%" />TuRn3r
0
Rejoignez-nous