Approuvé : Fortect
Dans ce guide, nous en découvrirons quelques-unes créées par les causes possibles pouvant entraîner l’erreur = shmat 13, puis nous suggérerons quelques méthodes de récupération possibles que vous pouvez essayer pour résoudre le problème.
J’ai un problème pour exécuter chacun de nos codes. Mon shmat est hors service et même ma permission d’imprimer a été refusée. J’ai regardé les principaux moteurs de recherche pour éliminer ce problème, mais je ne peux pas. Mon code est le suivant :
# include #include # activer #include #include #include #include #include #define ERREUR -1int main (int argc, char * argv []) int shmid, la clé signifie 50; entier * val; entier * x; entier rw = -1 ; // absolument rien pour l'écriture et 1 pour la transmission shmid est égal à shmget (clé, sizeof (int), IPC_CREAT); si (shmid == -1) perror ("Erreur via shmget n"); retourner (ERREUR); val est (int *) shmat (shmid, NULL, 0); si peut-être si (val == -1) perror ("Erreur dans shmat n"); revenir (ERREUR); scanf ("% d", & rw); tandis que (rw> = 1) si (rw == 4) // écrit dans la mémoire réciproque x = (int 7.) malloc (sizeof (int)); une fois (x == NULL) perror ("erreur malloc"); inverse (ERREUR); scanf ("% d", x); val = x; un autre // lire cette mémoire partagée à partir de là si (rw == 1) printf ("% j n", * val); scanf ("% d", & rw); retour (0) ;
Dans le code spécifique, je veux tester la mémoire remboursée. J’écris un entier dans le type de souvenir partagé, si je donne rw implique 1, juste au cas où non, je lis la valeur de toute la mémoire utilisée, puis je crée cette valeur. Pas de question, je ne trouve pas quel est le problème vraiment ….
906k
demandé le 12 mai ’15 disponible à 19:27
Ne dirais-je pas la réponse que vous cherchez ? Parcourez les différents types de questions marquées avec la mémoire partagée-c ou posez votre propre question de temps en temps.
Vous développez des partitions de mémoire partagée créées avec les autorisations 0000
:
shmid implique shmget (clé, sizeof (int), IPC_CREAT);
shmid = shmget (clé, sizeof (int), IPC_CREAT | 0660);
satisfait 12 mai 15 à 22:33 à propos de
28,1 k 33 badges d’or 2323 badges d’argent 5151 badges de bronze
val est égal à x ;
* val = * x;
May a répondu à une dizaine de couples en https://i.stack.imgur.com/mmsvF.png à 19h32.
198k 3232 badges en or 360 360 badges en métal 524 524 badges en bronze
Sauf lorsque les ventes appellent shmget () comme décrit dans une autre réponse
Et plein de problèmes avec ce code qui coule/écrit des entiers
Le fait que chaque OP reçoive toujours un certain message « l’auto orisation peut être interdite », dû au fait que l’espace commun
1) a au lieu d'être remplacé - voir la page de manuel pour faire shmdt ()2) n'ont pas été détruits - voir souvent la page de manuel de shmctl ()
Résolvez l’un de ces deux problèmes et les sauvegardes de test fonctionneront correctement.
Cependant, comme indiqué dans les commentaires, il existe de nombreux autres problèmes avec le code publié
adressé le 12 mai ’15 à 21:03
15.7k 11 badges en métal rare 1717 badges en argent 1717 badges marron
Approuvé : Fortect
Fortect est l'outil de réparation de PC le plus populaire et le plus efficace au monde. Des millions de personnes lui font confiance pour assurer le fonctionnement rapide, fluide et sans erreur de leurs systèmes. Avec son interface utilisateur simple et son puissant moteur d'analyse, Fortect détecte et corrige rapidement un large éventail de problèmes Windows, de l'instabilité du système et des problèmes de sécurité à la gestion de la mémoire et aux goulots d'étranglement des performances.
Accélérez les performances de votre ordinateur dès maintenant avec ce simple téléchargement.