Genehmigt: Fortect
In diesem Handbuch können wir einige der möglichen Ursachen herausfinden, die zu Fehler = shmat 13 führen können, und danach werden wir einige mögliche Wiederherstellungsmöglichkeiten vorschlagen, die Sie versuchen können, das tatsächliche zu beheben Problem.
Ich erzeuge ein Problem beim Ausführen des Codes. Mein Shmat ist außer Betrieb und sogar meine Erlaubnis zum Drucken wurde verweigert. Ich habe mir grundlegende Suchmaschinen angesehen, um dieses Problem zu lösen, aber ich kann nicht. Mein Code ist wie folgt:
Nummer enthält #include # Stellen Sie sicher, dass Sie erhalten#include #include #include #include #include #define FEHLER -1int main (int argc, char * argv []) int shmid, Schlüssel = 50; ganze Zahl 5. Wert; ganze Zahl 6. x; ganze Zahl rw = -1; // Null zum Schreiben und i zum Senden shmid entspricht shmget (key, sizeof (int), IPC_CREAT); wann (schmid == -1) perror ("Fehler in shmget n"); Fehler senden); val ist (int *) shmat (shmid, NULL, 0); wenn wenn (val == -1) perror ("Fehler in shmat n"); zurück (FEHLER); scanf ("% d", & rw); while (rw> bedeutet 1) in der Instanz (rw == 4) // den gemeinsamen Speicher erfinden by = (int 7.) malloc (sizeof (int)); einmal (x == NULL) perror ("malloc-Fehler"); von Angesicht zu Angesicht (FEHLER); scanf ("% d", x); val ist gleich x; Ein weiterer // diesen bereitgestellten Speicher von dort lesen falls (rw == 1) printf ("% d n", 3. val); scanf ("% d", & rw); gehen (0);
In welchem Code hoffe ich, den zurückgegebenen Speicher zu testen. Ich schreibe eine einzelne Ganzzahl in den Shared Memory-Typ, wenn ich rw teile impliziert 1, wenn nicht, lese ich den gesamten Wert des gesamten Shared Memory, dann bilde ich das Wert. Zweifellos kann ich das Problem nicht genau finden ….
906k 252.252 goldene Abzeichen 36003600 silberne Abzeichen 30453045 Abzeichen
beantragt zwölf Mai ’15 um 19:27 Uhr
Würde ich nicht die Antwort sagen, nach der Sie suchen? Durchsuchen Sie die verschiedenen Arten von Fragen, die mit Shared Memory-c Memory markiert sind, oder stellen Sie gelegentlich Ihre eigene Frage.
Sie haben gemeinsam genutzte Speicherwände mit Berechtigungen 0000
erstellt:
shmid bedeutet normalerweise shmget (key, sizeof (int), IPC_CREAT);
shmid entspricht shmget (key, sizeof (int), IPC_CREAT | 0660);
antwortete Mai zwölf Monate ’15 um 22:33 in
28,1 k 33 das Element der goldenen Abzeichen 2323 silberne Abzeichen 5151 bronzene Abzeichen
val gleich x;
* val entspricht * x;
May schickte https://i.stack.imgur.com/mmsvF.png um 19.32 Uhr eine Antwort an ein Dutzend Paare.
198k
Außer beim Aufruf von shmget () wie beschrieben, wenn eine andere Antwort
Und viele Probleme mit diesem Code, der ganze Zahlen liest / schreibt
Die Tatsache, dass das OP immer eine bestimmte Nachricht “Auto-Orisation ist verboten” erhält, als Folge der Tatsache, dass die gemeinsamen Immobilien
1) wurde nicht ersetzt - schau in der Manpage nach shmdt()2) wurden nicht zerstört - siehe die Manpage, um shmctl() zu erhalten.
Lösen Sie diese beiden Probleme und einige Test-Backups werden problemlos funktionieren.
Wie in den Kommentaren erwähnt, gibt es jedoch viele andere Arten von Problemen mit dem geposteten Code
adressiert am 12. Mai ’15 um 21:03
15.7k
Genehmigt: Fortect
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen.
Beschleunigen Sie jetzt die Leistung Ihres Computers mit diesem einfachen Download.