Bonjour à tous!

Dans la cadre de mes exercices de système en C sur le chapitre des communications inter-processus, il m'est demandé de gérer la création et la suppression des processus tout en pouvant consulter la liste des process actuels donc un petit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
if(fork() == 0)
execlp("ps","ps",0);
    wait();
permet de consulter mes processus.

Si j'ai bien compris, cet exercice a pour but de me faire comprendre les signaux avec la fonction "kill( pid du process, SIGINT (ou SIGKILL)) et revisiter la fonction fork().

J'ai réalisé une version qui fait ce qui est demandé sous linux, mais je me pose des questions...

Pour créer des process je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
void creerProcessus(short *n){
  if(*n > 0 && fork() == 0){
     *n -= 1;
     creerProcessus(n);
}
}
ce qui me crée donc n process récursivement. Si je décide de quitter je dois le faire pour chaque fils créé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
if(strcmp(ligne, "q\n")==0){
   exit(0);
En fait je fais une boucle tant que ce n'est pas "q" qui est entré je propose de créer ou supprimer des processus.
Puisqu'on est dans le chapitre qui parle entre autre des signaux, je me suis dis il faudra faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
if(strcmp(ligne, "q\n")==0){
			kill(pid,SIGINT);
Sauf que le pid qui me permettrait de quitter le programme et laisser les fils en attente être adopté par le système, je ne sais pas comment le garder à ma portée.

J'ai bien essayé de faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
	pidPere = getpid();
	printf("pidPere %d\n", pidPere); // est différent de 0
avant de commencer une quelconque création ou suppression de process. Mais lorsque je crée des procress, la contenu de pidPere est à 0!! Moi qui pensais que le fork() créait une image absolument identique au process père, à l'exception du numéro du processus.
Ca fait donc un
est-ce propre? (moi je trouve pas) même si ca fonctionne.

Donc tout ça pour vous demandez qu'est ce qui pourrait m"échapper et si vous voyez une meilleur facon de faire je suis à votre écoute ??

J'espère que c'est assez clair sans rentrer dans les détails de mon travail. (Je précise que j'ai déjà fais des recherches)...

Merci