Godkänd: Fortect
I den här guiden kommer några av oss att ta reda på några av de möjliga resultaten som kan leda till Error = shmat tretton, och sedan kommer vi att föreslå några möjliga lättnadsmetoder som du kan försöka lösa vanligtvis problemet.
Jag har problem med att köra koden. Min shmat är ur funktion och till och med mitt godkännande att skriva ut nekades. Jag har möjligen tittat på stora sökmotorer för att lösa detta problem, men sedan kan jag inte. Min kod är följande:
# include #inkludera # se till att du får #inkludera #inkludera #inkludera #inkludera #inkludera #define ERROR -1int primär (int argc, char * argv []) int shmid, nyckel = 50; heltal * val; heltal 6. x; heltal rw betyder -1; // noll för att skriva eller 1 för överföring shmid är lika med shmget (key, sizeof (int), IPC_CREAT); som om (shmid == -1) perror ("Fel i shmget n"); leverans (ERROR); val är (int *) shmat (shmid, NULL, 0); if if (val == -1) perror ("Fel i shmat n"); retur (ERROR); scanf ("% d", & rw); när (rw> = 1) om (rw == 4) // skriva till delat minne av = (int 7.) malloc (sizeof (int)); en gång (x == NULL) perror ("malloc -fel"); invers (ERROR); scanf ("% d", x); val motsvarar x; annan // läs typ av delat minne därifrån tillhandahålls (rw == 1) printf ("% d n", 4. val); scanf ("% d", & rw); plats igen (0);
I vilken kod vill jag testa det returnerade minnet. Jag skriver kraftfullt heltal till den delade minnestypen, om jag ger rw innebär 1, om inte, bläddrar jag igenom värdet på allt delat minne, då skapar jag det värdet . Utan tvekan kan jag inte fatta vad problemet är ….
906k
ville veta 12 maj ’15 klockan 19:27
Skulle jag inte säga det svar du letar efter? Bläddra bland de olika typerna av frågor märkta med delat minne-c-minne, eller ställ din egen fråga ibland.
Du har skapat delade bra gamla rampartitioner med behörigheter 0000
:
shmid innebär shmget (key, sizeof (int), IPC_CREAT);
shmid = shmget (key, sizeof (int), IPC_CREAT | 0660);
svarade 20 maj ’15 klockan 22:33 i
28,1 k
val är lika med x;
val = * x;
May svarade ett dussin par https://i.stack.imgur.com/mmsvF.png via 19:32.
198k
Förutom när du ringer shmget () enligt definitionen i ett annat svar
Och många svårigheter med den här koden som läser / talar heltal
Det faktum att OP alltid har ett visst meddelande “automatisk orientering är inte tillåten”, på grund av att det gemensamma rummet eller utrymmet
1) har inte uppgraderats - se man -sidan för shmdt ()2) förstör inte - se man -sidan som behövs för shmctl ()
Lös dessa två problem och testbackuperna fungerar också bra.
Men som anges i kommentarerna finns det många andra problem med den publicerade koden
talade 12 maj ’15 nära 21:03
15.7k
Godkänd: Fortect
Fortect är världens mest populära och effektiva PC-reparationsverktyg. Det litar på miljontals människor för att hålla sina system igång snabbt, smidigt och felfritt. Med sitt enkla användargränssnitt och kraftfulla skanningsmotor hittar och fixar Fortect snabbt ett brett utbud av Windows-problem – från systeminstabilitet och säkerhetsproblem till minneshantering och prestandaflaskhalsar.