PID [Linux]

garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 - 15 juin 2004 à 12:42
abdessamed78 Messages postés 1 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 11 novembre 2007 - 11 nov. 2007 à 15:21
Salut à tous,

je voudrais executer un programme et en récupérer le pid.

J'ai pensé à exec et à toutes ses variantes mais ça ne me donne pas de pid...
J'ai pensé à fork mais ça n'execute pas un prog...

Quelqu'un a-t-il la solution ?

Merci

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac

2 réponses

MetalDwarf Messages postés 241 Date d'inscription mardi 29 octobre 2002 Statut Membre Dernière intervention 23 janvier 2006
15 juin 2004 à 18:35
fork() + execve().

C est la maniere la plus courante de lancer un processus "fils" sous Linux. En fait, tu ne l as pas bien remarque sans doute, mais exec n est quasiment jamais utilise seul parce que dans le cas de exec*(), le processus courant est REMPLACE par le processus qui est execute. Ainsi en appelant fork() tu recupere sur le pere le PID du fils, et pour le fils tu appelles exec*().

int pid = fork();
if(pid == -1)
{
printf("Erreur!!");
exit(-1);
}
if(pid == 0)
printf("Bienvenue chez le pere!");
else exec(...);

Par contre il ne faut pas oublier d appeler wait() (ou wait4, voir le manuel), pour que le pere attende la terminaison du fils, afin d eviter qu il ne devienne un processus "zombie". Cependant cela est assez facile puisque le pere recoit un signal SIGCHLD lorsqu un de ses fils quitte, il ne reste donc plus qu a adapter le gestionnaire de ce signal.

Voila j espere avoir ete clair et complet...
0
abdessamed78 Messages postés 1 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 11 novembre 2007
11 nov. 2007 à 15:21
j'ai utilisé "execl" pour appeler un programme console depuis une application C++Builder! mais cette application est fermé aprés l"execution de Exec !
c'est quelqu'un à une idee je serais trés reconnaissant.
0
Rejoignez-nous