Salut à tous et Joyeux Nöel !
J'ai un petit problème dans mon code, voici tout d'abord le code, j'expliquerai mon problème dans la suite :
Programme "principal":
Code :
- int main (int argc, char *argv[]) {
- void afficheur(*int)
- /*Déclaration de Variables */
- int shmid,tube[2];
- int *valeurs;
- /* Allocation des segments de mémoire partagée */
- shmid = shmget(IPC_PRIVATE, sizeof(int)*4, 0666);
- valeurs = (int *)shmat(shmid, NULL, 0);
- /* Création d'un tube */
- if (pipe (tube) == -1)
- {
- perror ("creation pipe impossible\n" );
- exit(1);
- }
- afficheur(tube);
- close(tube[0]);
- write(tube[1],valeurs,sizeof(int)*4);
- }
|
Fonction afficheur :
Code :
- void afficheur(int *tube)
- {
- int *val;
- if(! fork())
- {
- close(tube[1]);
- read(tube[0],val,sizeof(int)*4);
- printf("Valeur : %d",val[0]);
- }
- }
|
Donc comme vous pouvez le constater j'ai crée quatre segments de mémoire partagée avec des valeurs qui seront changées par des processus mais là n'est pas le problème, tout cette partie fonctionne ... j'ai juste un problème avec mon tube pour afficher les valeurs si quelqu'un pouvait m'expliquer où j'ai fait l'erreur parce que mon programme ne m'affiche pas les valeurs attendues !
Merci beaucoup pour votre aide !
Message édité par arnaudm57 le 26-12-2005 à 20:08:09