C++ (fork () — création d'une “liste” de processus
J'ai un programme qui crée de nouveaux processus "un par un". Est-il possible de modifier ce code de sorte qu'il crée une "liste" de processus – c'est à dire de l'enfant 1 étant le parent de l'enfant 2, enfant 2 étant le parent de l'enfant 3, etc.?
#include <string>
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include "err.h"
using namespace std;
int main ()
{
pid_t pid;
int i;
cout << "My process id = " << getpid() << endl;
for (i = 1; i <= 4; i++)
switch ( pid = fork() ) {
case -1:
syserr("Error in fork");
case 0:
cout << "Child process: My process id = " << getpid() << endl;
cout << "Child process: Value returned by fork() = " << pid << endl;
return 0;
default:
cout << "Parent process. My process id = " << getpid() << endl;
cout << "Parent process. Value returned by fork() = " << pid << endl;
if (wait(NULL) == -1)
syserr("Error in wait");
}
return 0;
}
cette habitude de créer 4 processus,il crée 2^4 processus
Si l'enfant 1 est d'être le parent d'un enfant de 2, alors le processus d'origine ne sais rien à propos de l'enfant de 2 à moins que ce soit l'enfant 1 enfant ou 2 dit-il; le problème est plus grave pour un enfant de 3 puis de l'enfant 4. Bien que l'enfant 4 pourrait connaître de tous ses ancêtres, ses ancêtres ne savez rien à propos de leurs plus lointains descendants.
Pourquoi voulez-vous créer le processus de hiérarchie dans un linéaire, les plus éloignés de la mode? Au lieu de cela, il est probablement plus utile pour un parent seul à être directement liées à tous ses enfants. De cette façon, le parent peut avoir une seule table contenant tous les enfants du PIDs, par exemple. Dans votre scénario, chaque processus connaît un seul parent et un enfant. Le travail supplémentaire doit être fait pour communiquer ce qu'ils savent, ou à examiner le processus de hiérarchie pour découvrir toutes les relations.
Si l'enfant 1 est d'être le parent d'un enfant de 2, alors le processus d'origine ne sais rien à propos de l'enfant de 2 à moins que ce soit l'enfant 1 enfant ou 2 dit-il; le problème est plus grave pour un enfant de 3 puis de l'enfant 4. Bien que l'enfant 4 pourrait connaître de tous ses ancêtres, ses ancêtres ne savez rien à propos de leurs plus lointains descendants.
Pourquoi voulez-vous créer le processus de hiérarchie dans un linéaire, les plus éloignés de la mode? Au lieu de cela, il est probablement plus utile pour un parent seul à être directement liées à tous ses enfants. De cette façon, le parent peut avoir une seule table contenant tous les enfants du PIDs, par exemple. Dans votre scénario, chaque processus connaît un seul parent et un enfant. Le travail supplémentaire doit être fait pour communiquer ce qu'ils savent, ou à examiner le processus de hiérarchie pour découvrir toutes les relations.
OriginalL'auteur user2262230 | 2013-06-03
Vous devez vous connecter pour publier un commentaire.
Utilisation
fork
dans un ensemble de imbriquéeif
sSortie
Parent PID 3857
enfant 1
enfant 2
enfant 3
Pour n processus,
édité,utiliser la récursivité.
Salut, je suis en train de faire quelque chose de similaire. Je veux reproduire jusqu'à ce qu'il atteint le nombre maximum de fichier de processus qui peut être fait et il ne peut pas créer plus de processus. Que dois-je faire dans ce cas?
OriginalL'auteur rjv
Si vous voulez garder la boucle afin de définir dynamiquement la profondeur de la fourche arbre,
Sortie
OriginalL'auteur Ring Ø
OriginalL'auteur Javad