Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2472 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C][linux] msgget : problème d'allocation

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C][linux] msgget : problème d'allocation

n°1199468
cityhunter​xyz
100111011010010011 bip!
Posté le 14-09-2005 à 16:31:34  profilanswer
 

bonjour,
je dois allouer 30 files de messages en utilisant msgget (impératif)
je fais donc une boucle appelant 30 fois msgget :

Code :
  1. for (ind = 0; ind < CD_NBMAXOUTIL; ind++)
  2.     {
  3.         P_taboutil[ind].cle_file_read = CD_CLEFMREAD_OUTIL + ind;
  4.         G_Tab_files[ind] = msgget (CD_CLEFMREAD_OUTIL + ind, IPC_CREAT | 0666);
  5.         if (G_Tab_files[ind] == CD_KO)
  6.     {
  7.      char c;
  8.      fprintf(stderr,"erreur dans itteration %d/n",ind);
  9.      scanf ("%c\n", &c);
  10.             C_ERREUR ("PI_READ_TRAM", 1, "S_READ_INIT", errno, "pb msgget creation file outil" );
  11.     }
  12.     }


or pour une raison inconnue cela foire à la 11ième indentation.... (key 330 -> 340)

Code :
  1. cat /proc/sysvipc/msg
  2.        key      msqid perms      cbytes       qnum lspid lrpid   uid   gid  cuid  cgid      stime      rtime      ctime
  3.        360     524288   666           0          0 12579 12576   502   502   502   502 1126707200 1126707200 1126703055
  4.        363      32769   666           0          0     0     0   502   502   502   502          0          0 1126693229
  5.        366      65538   666           0          0     0     0   502   502   502   502          0          0 1126693229
  6.        362     557059   666           0          0     0     0   502   502   502   502          0          0 1126703091
  7.        365     983044   666           0          0     0     0   502   502   502   502          0          0 1126703259
  8.        330    4620293   666           0          0     0     0   502   502   502   502          0          0 1126707382
  9.        331    4653062   666           0          0     0     0   502   502   502   502          0          0 1126707382
  10.        332    4685831   666           0          0     0     0   502   502   502   502          0          0 1126707382
  11.        333    4718600   666           0          0     0     0   502   502   502   502          0          0 1126707382
  12.        334    4751369   666           0          0     0     0   502   502   502   502          0          0 1126707382
  13.        335    4784138   666           0          0     0     0   502   502   502   502          0          0 1126707382
  14.        336    4816907   666           0          0     0     0   502   502   502   502          0          0 1126707382
  15.        337    4849676   666           0          0     0     0   502   502   502   502          0          0 1126707382
  16.        338    4882445   666           0          0     0     0   502   502   502   502          0          0 1126707382
  17.        339    4915214   666           0          0     0     0   502   502   502   502          0          0 1126707382
  18.        340    4947983   666           0          0     0     0   502   502   502   502          0          0 1126707382


 
quelqu'un connaitrais-t-il une solution? (variable /proc à changer etc....)

mood
Publicité
Posté le 14-09-2005 à 16:31:34  profilanswer
 

n°1199523
matafan
Posté le 14-09-2005 à 17:11:46  profilanswer
 

Qu'est-ce qui "foire" ? Ecrit un programme minimal mais complet qui reproduit le probleme, est poste-le ici.

n°1199683
moi23372
Posté le 14-09-2005 à 20:31:54  profilanswer
 

déjà il serait bien que tu respectes les notions du C. Une déclaration en plein milieu de ton code est totalement interdite en C. Faut pas mélangé le C et le C++

n°1199685
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-09-2005 à 20:38:02  profilanswer
 

moi23372 a écrit :

déjà il serait bien que tu respectes les notions du C. Une déclaration en plein milieu de ton code est totalement interdite en C. Faut pas mélangé le C et le C++


Meuh ? C'est autorisé en C99...
 
Maintenant, que ce soit une pratique souhaitable est un autre débat. (perso je suis contre, car la portée de la variable est peu claire...)
 
De plus, je ne vois pas à quoi tu fais allusion dans le code du posteur original.

Message cité 1 fois
Message édité par Emmanuel Delahaye le 14-09-2005 à 21:20:13

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1199688
Taz
bisounours-codeur
Posté le 14-09-2005 à 20:49:37  profilanswer
 

Emmanuel Delahaye a écrit :

Meuh ? C'est autorisé en C99...
 
Maintenant, que ce soit une pratique souhaitable est un autre débat. (perso je suis contre, car la portée de la variable est peu claire...)


 
tu peux discuter là dessus, maintenant, déclarer quand on initialise, je trouve ça bien meilleur. Ça évite les mauvais codes tels que
 

Code :
  1. {
  2. Foo x;
  3. /* je suis un bon programmeur, je ne laisse pas mes variables non-initialisées
  4.    quand je suis bien luné, j'utilise une vrai initialisation
  5. */
  6. x = gros_calcul();
  7. /* plein de travail */
  8. /* ah ben merde, finalement pas besoin de x, on sort */
  9. }


 
(ce qui est surtout vrai en C++, mais c'est totalement HS)
 
 
Et puis d'ailleurs, je ne vois rien de C99 ici


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C][linux] msgget : problème d'allocation

 

Sujets relatifs
Etats dans access : probleme de comptage de champs videsProblème de marge avec des images
problème avec le jxl.jarProblème OSQL & ACCENT
variance IE et mozilla firefox probleme de %Problème pour déclaration des règles formulaire
Probleme avec copy()[ASP/.net] probleme de migration ASP==> ASP.net
probleme Formulaire Access en plein écranProblème de compatibilité
Plus de sujets relatifs à : [C][linux] msgget : problème d'allocation


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR