begin process at 2012 05 30 05:07:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Autre

 > 

variable partagé entre processus


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

variable partagé entre processus

samedi 9 décembre 2006 à 21:04:37 | variable partagé entre processus

facilus

Bonjour,

j'ai fais un programme en c sous unix qui consiste a creer 3 fils (avec fork) , j'ai declaré 2 variables globales leur valeurs doivent etre les memes pour tous les processus creer :

int index[3] , initialisé a -1;
int nb=0;

a chaque creation d'un processus fils j'incremente la variable nb é je modifie le tableau index , apres la creation du 3 fils normalement j'aurai : nb=3 et index(1,2,3); le probleme é ke pour le 1er fils le contenu de nb reste 1 é index(1,0,0) , pour le 2eme fils nb=2 et index(1,2,0) pour le 3eme nb=3 et index(1,2,3) .

comment faire pour que les 3 fils doivent avoir le meme contenu des variables globals (nb=3 et index(1,2,3) ) ?

voici la portion du code :
void main ()
{
  for(i=1;i<3;i++) {
  fork();
  nb++;
  index[i-1]=i;
}

Merci


samedi 9 décembre 2006 à 21:10:04 | Re : variable partagé entre processus

facilus

je ne peux utiliser ni les semaphores ni la memoire partagé , seulement les pipes et signaux
samedi 9 décembre 2006 à 22:18:46 | Re : variable partagé entre processus

Ombitious_Developper

Salut:

Ton problème est mal expliqué.
Qu'est ce que tu veux précisement et qu'est ce que tu as trouvé comme résultat?
samedi 9 décembre 2006 à 22:29:59 | Re : variable partagé entre processus

Ombitious_Developper

Salut:

Essaye ceci:

int nb = 0;
int index [3] = {-1, -1, -1};

int main ()
{
    for(i=0;i<3;i++) {
        // Création d'un processus fils
        fork();
        nb++;
        index[i] = i+1;
        // Fin
    }
    return o;
}
samedi 9 décembre 2006 à 22:40:55 | Re : variable partagé entre processus

facilus

le resultat est : lorsque je cree seulement le derniers fils (3eme) , é j'affiche le nb é le tableau pour le 1er  et le 2eme fils je trouve ke pour le 1er : il affiche nb = 1, {1,-1,-1} et le 2eme : nb=2 , {1,2,-1}, je ve ke le 1er, 2eme et 3eme fils affiche la meme chose cad :

nb=3 et {1,2,3}cad afficher ce ke le dernier fils a modifier.
merci


samedi 9 décembre 2006 à 22:49:06 | Re : variable partagé entre processus

Ombitious_Developper

Salut:

Si tu veux afficher nb = 3 et index = {1, 2, 3} pour les 3 processus (Bienque je ne comprends pas pourquoi faire ça):

int nb = 0;
int index [3];

int main ()
{
    for(i=0;i<3;i++) {
        // Création d'un processus fils
        memset (index, -1, sizeof (index));
        fork();
       
        for (int j=0; j<3; ++j)
            index [j] = j+1;

        nb++;
       
        // Fin
    }
    return o;
}





samedi 9 décembre 2006 à 22:50:34 | Re : variable partagé entre processus

Ombitious_Developper

Salut:

Pardon, tu peux supprimer le memset c'est sans importance.

samedi 9 décembre 2006 à 23:56:09 | Re : variable partagé entre processus

facilus

je fé ca pour : a chaque fois qu'un client se connecte vers le serveur je fé un fork , je sauvegarde l'identifiant du client dan le tableau index (variable global) ensuite lorske le serveur diffuse un message a tt les cliens connécté il teste combiel y'a t'il de clients conécté (la variable globale nb) é parcoure le tableau index pour envoyer a chake client qui existe dan le tableau.

lorsque le 1er client se connecte : nb = 1 ==> faire un fork pour traiter le client seul
lorsque le 2eme client se connecte nb = 2;==>faire fork ....
lorsque le 3eme client se connecte nb = 3; ==>faire fork .....

lorsque par exemple le 2eme client envoi un message il trouve ke le nb = 2 pas a 3 ???
j'espere ke jé bien expliké ,sinon je detaillerai plus
mercredi 13 décembre 2006 à 23:08:42 | Re : variable partagé entre processus

ShareVB

salut,

moi je dirais que tu peux faire ça avec uniquement des signaux :
-> SIG_USR1 : handler incrémente nb
-> SIG_USR2 : handler décrémente nb
-> SIG_CHILD (dans le père) : envoit SIG_USR2 à tout le groupe de processus : kill(0,SIG_USR2)

ensuite lorsque le parent se lance, appelles setpgrp() pour créer un groupe de processus
lorsque tu fais ton fork, dans le fils ou dans le père mais pas dans les deux, appelles kill(0,SIG_USR1)

ShareVB
samedi 14 novembre 2009 à 11:49:25 | Re : variable partagé entre processus

insafunix

bonjour,j'essaye de créer un programme C qui crée deux fils l'un affiche les entiers de 1à100 et l'autre de 101 à 200 en utilisant FORK mais je n'arrive pas.


Cette discussion est classée dans : variable, fils, index, processus, nb


Répondre à ce message

Sujets en rapport avec ce message

Variable global et processus [ par obasileus ] Salut j'ai un programme comportant 4 processus fils qui lancent chacun 4 threads qui gèrent 2 problemes producteur/consom. Le processus pere à besoin Thread et variable globale [ par valoue ] Bonjour,Je developpe une application en C++.La classe que je developpe comporte une méthode "recevoir (char *trame). Dans cette méthode, je fais appel récuperation de l'etat d'un processus [ par Spy63 ] J'ai un programme en C systeme que j'ecrit sous vi pour linux dans lequel:-j'ai un pere et deux fils.-Mon but et d'atendre que les fils soit en pause communication inter processus sous linux [ par boumarsel ] voila un processus cree un processus fils par fork, le fils execute un traitement (fonction) et retourne une valeur que je veux recuperer par le proce (C) Comment créer des processus fils? [ par berserker21 ] Sans utiliser la fonctions fork() vu que je programme sous windows. Le but étant de permettre a plusieurs clients de se connecter à mon apli serveur e Portée de variable [ par Roro8883 ] Bonjour, comment peut-on déclarer une variable globale à l'intérieur d'une fonction ???Je m'explique, voici mon code (très simplifié) :void initialisa Aide Processus fils [ par phoenix_91 ] Bonjour, J'ai un programme (C++) pere qui créé un processus fils qui lance une application. J'aimerais recuperer l'affichage produit par le processu wait et exit dans fork [ par mina_mi ] bonjour j'ai un probleme sur les notions de wait() et exit() dans la création des processus     par exemples si j'ai plusieurs processus fils qui ont Problème avec GetMessage d'un processus parent [ par RV2931 ] Bonjour, j'ai un problème de communication, mais je suis informaticien, donc tout s'explique :), nan plus sérieusementDans le processus père, j'utilis Petit Programme [ par jarod05 ] Bonjour, Je suis à la recherche d'un code qui me permet :      de lire sur la ligne de commande en utilisant argc et argv le nbre N de processus à cré


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales