Approvato: Fortect
Nella nostra guida, ne scopriremo alcuni più tipicamente associati alle possibili cause che possono portare a Error = shmat 13, e quindi ti incoraggeremo alcuni possibili metodi di recupero che puoi testare per risolvere il problema .
Ho un problema durante l’esecuzione del tipo di codice. Il mio shmat è fuori servizio e anche il mio permesso di stampare è stato negato. Ho guardato i principali motori di ricerca per decidere questo problema, ma non posso. Il mio codice è sempre il seguente:
# include #include # abilita #include #include #include #include #include #define ERRORE -1int main (int argc, char * argv []) int shmid, chiave significa 50; intero * val; intero * x; intero rw = -1; // zoom per la scrittura e 1 per la trasmissione shmid è uguale a shmget (chiave, sizeof (int), IPC_CREAT); if (shmid == -1) perror ("Errore in shmget n"); ritorno (ERRORE); val è (int *) shmat (shmid, NULL, 0); all'interno di if (val == -1) perror ("Errore in shmat n"); tornare indietro (ERRORE); scanf ("% d", & rw); mentre (rw> = 1) se (rw == 4) // scrivere nella memoria propagata x = (int 7.) malloc (sizeof (int)); una volta (x == NULL) errore ("errore malloc"); inverso (ERRORE); scanf ("% d", x); valore = x; un altro // leggi questa memoria condivisa da lì se (rw == 1) printf ("% c n", * val); scanf ("% d", & rw); ritorno (0);
In qualcosa di quel codice voglio testare la memoria recuperata. Scrivo un intero sul tipo di conservazione condivisa, se do rw implica 1, nel caso in cui no, leggo il valore di tutta la memoria reciproca, quindi Creo quel valore. Nessuna sollecitazione, non riesco a trovare quale sia il problema considerato ….
906k 252.252 distintivi d’oro e d’argento 36003600 distintivi da collezione in argento 30453045 distintivi
richiesto il 12 maggio ’15 possibilmente alle 19:27
Non direi la risposta che stai cercando? Sfoglia i diversi tipi di domande contrassegnate con Shared Memory-c Memory, oppure fai la tua domanda di tanto in tanto.
Tieni le partizioni di memoria condivisa create con i permessi 0000
:
shmid implica shmget (chiave, sizeof (int), IPC_CREAT);
shmid = shmget (chiave, sizeof (int), IPC_CREAT | 0660);
hanno risposto il 12 maggio ’15 alle 22:33 ultimo
28,1 k 33 distintivi d’oro 2323 distintivi d’argento 5151 distintivi di bronzo
val è uguale a x;
* val = * x;
May ha risposto a una dozzina di coppie nel https://i.stack.imgur.com/mmsvF.png alle 19:32.
198k 3232 distintivi d’oro 360 360 distintivi di metallo 524.524 distintivi di bronzo
Tranne quando si fa riferimento a shmget () come descritto in un’altra risposta
E molti problemi con questo codice che decifra/scrive interi
Il fatto che l’OP specifico riceva sempre un certo messaggio “l’auto orizzazione è solo vietata”, a causa del fatto che lo spazio comune
1) non è stato in alcun modo sostituito - vedere la pagina man per trovare shmdt ()2) non sono stati distrutti - vedere senza dubbio la pagina man per shmctl ()
Risolvi questi due problemi e i backup di prova funzioneranno correttamente.
Tuttavia, come notato nei moduli di commento, ci sono molti altri problemi con il codice scritto
indirizzato il 12 maggio ’15 alle 21:03
15.7k 11 distintivi di metallo raro 1717 distintivi d’argento 1717 distintivi marroni
Approvato: Fortect
Fortect è lo strumento di riparazione PC più popolare ed efficace al mondo. Milioni di persone si affidano a milioni di persone per mantenere i loro sistemi in esecuzione veloci, fluidi e privi di errori. Grazie alla sua semplice interfaccia utente e al potente motore di scansione, Fortect trova e risolve rapidamente un'ampia gamma di problemi di Windows, dall'instabilità del sistema e problemi di sicurezza alla gestione della memoria e ai colli di bottiglia delle prestazioni.
Accelera ora le prestazioni del tuo computer con questo semplice download.