Comment créer un certain nombre d'enfants de processus avec fork()

J'ai besoin de créer un certain nombre de connexions simultanées processus enfant. Je tiens aussi à chaque enfant de processus pour modifier une variable globale, de sorte que le principal processus parent peut l'imprimer dans sa dernière version modifiée. Quand je lance le programme ci-dessous, la valeur de " k " sera de 5, de sorte que la variable globale ne change pas. Si je supprime le "exit(0)", puis la variable globale changements, mais cette fois le nombre de processus fils créé devient plus grande.

Avec fork(), comment pourrais-je créer un X nombre de processus enfants qui peuvent modifier les données (variables globales, variables locales, etc) dans le processus parent?

int k = 5; //global variable   

int main(){

  int i=0;
  int status;

  for(i = 0; i<5; i++){
    if(fork() == 0){ 
        printf("child %d %d\n", i, ++k);
        sleep(5);
        printf("done %d\n",i);
        exit(0);
    }
  }

  return 0;
}
Vous avez répondu à votre propre question - l'utilisation d'une boucle for.
Ouais, mais k sera de 5 au lieu de 10. C'est ça le problème.
"enfant de processus pour modifier une variable globale" qui n'est pas la voie à fourche fonctionne, je suppose que c'est 'threads' vous plutôt souhaitez créer
Si votre problème n'est pas "Comment créer un certain nombre d'enfants de processus avec fork()", mais en fait "Comment permettre à l'enfant de processus pour modifier parent état du processus avec fork()". Est-ce que son précis?
Les deux! Mais je suis plus préoccupé par ce dernier. Ce que j'ai vraiment besoin de faire est d'appeler execvp() plusieurs fois. Si je ne peux pas passer un tableau défini à l'échelle mondiale dans le programme principal, alors je suppose que j'ai besoin pour déterminer le contenu de celle-ci après la boucle for en-tête et de passer le tableau de execvp() dans chaque bloc if.

OriginalL'auteur user246392 | 2011-02-16