Programmation des processus sous unix

Soyez le premier à donner votre avis sur cette source.

Vue 19 228 fois - Téléchargée 811 fois

Description

le programme que vous avez entre vos mains est déstiné aux débutants dans la programmation systeme des processus sous unix,car c'est le meilleur environnement pour ce genre de programmation et sa gestion de processus etant simple et puissante.
ce programme consiste à créer un processus qui affiche son pid ,son etat,et crée un processus fils,puis s'endort.pendant ce temps le fils se branche à un nouveau programme(prog) grace à execl,affiche son ppid,son pid,et son propre etat avant de se terminer.
A son reveil,le processus pere examinera le pid de son fils ,aprés avoir lu le code de retour de wait.
pour le traitement j'ai utilisé simplement des messages car mon objectif c'est de donner une idée générale sur les processus,vous pouvez les remplacer par d'autres instructions.
le code source de fichier executable "prog" se trouve dans le fichier prog.c que je l'ai compilé,puis copier à partir de fichier a.out vers le fichier prog.
pour l'instruction execl il faut la mettre en fin car une fois le processu fils charge le programme "prog" en argument il ne peut pas récupérer le code précedent par exemple si on ajoute juste aprés l'instruction execl une autre instruction ,cette derniere ne s'executera pas car son code sera ecraser par le nouveau code de programme passer en argument dans la fonction execl.

Source / Exemple :


/*------code source de processus.c:-------*/

#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int fils,pidfils,iden;
char etat1[1024];
char etat2[1024];
main()
{
int pid_p;
pid_p=getpid();
printf("pere: je suis le processus pere mon pid=%d\n",getpid());
sleep(300);
sprintf(etat1,"ps -o s -p%d",pid_p);
system(etat1);
iden=fork();
if(iden==-1) 
{
printf("erreur de creation de processus fils\n"); 
exit(1); 
}
if(iden==0)
{
int pid_f;
pid_f=getpid();
printf("\nfils: je suis le processus fils mon pid=%d\n\n",pid_f);
sprintf(etat2,"ps -o s -p%d",pid_f);
system(etat2);
sleep(90);
execl("prog","prog",0);
}
else 
{
printf("\npere: maintenant je dors 5 secondes\n");
sleep(5);
printf("pere: je suis reveille\n\n");
pidfils=wait(&fils);
  printf("pere:  mon processus fils termine son execution et son pidfils=%d\n\n",pidfils);
}
}

/*-----------code source de prog.c-----------*/
#include<sys/types.h>
#include<sys/wait.h>

main()
{
printf("\n\t*************PROGRAMME EXECUTE PAR LE FILS******************\n");
printf("\nle programme:   je suis le programme executer par le fils\n");
printf("\nle programme:   l'identificateur de mon pere ppid=%d\n",getppid());
printf("\nle programme:   le fils va vous donnez la date d'haujourd'huit\n");
printf("\nle programme:\t");
execlp("/usr/bin/date","/usr/bin/date",NULL); 
}

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
3 mai 2011

bonsoir c trés bein,mais je voudrais savoir comment trier le contenu selon l’un des critères choisi (nom, , …) par ordre croissant ou décroissant.merçi :)
Messages postés
2
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
19 mai 2006

Bonsoir bin voila je vouderai savoir si il y'a une instruction qui retourne l'etat d'un processus en C.
Merci
Messages postés
3
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
22 avril 2006

oui je voix que c'est comme même très bien.et je croix que c'est un bon début pour toi mon ami.
mais sache que tu peux t'en servire dans bcp de choses.si tu metrises les sockets.tu voix ce que je veux dire ??
Messages postés
9
Date d'inscription
lundi 18 août 2003
Statut
Membre
Dernière intervention
13 août 2004

salut
chaque prossecus ds unix a un PID mon ami
c utile pour le désigner pour le killer (tuer)
Messages postés
72
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
11 avril 2005
1
C'est quoi un pid ?
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.