Wie man richtig ftruncate (int aux, off_set n) in c verwenden

stimmen
1

Hallo Im Versuch, einen gemeinsam genutzten Speicherraum mit einer Funktion hinzuzufügen, ich tue es wie folgt aus:

void CreateSpace(int size, std::string name){

int aux;
int aux2;


aux = shm_open(name.c_str(),  O_RDONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);

if(aux > 0){
    aux2 = ftruncate(aux, sizeof(int)*2);
    if( aux2 != -1){

        works

    }else{

        It does not work
    }
}else{
Shared Memory Already Created }

Das Problem ist, dass ich immer den Teil bin immer nicht, ich manuell die gemeinsam genutzten Räume in dev / shm löschen funktioniert, aber wenn ich versuche, einen neuen Raum zu schaffen, der nicht tut, existiert und versuchen, eine bestimmte Größe festlegen ich immer bin immer ftruncate = -1. Wie kann ich dieses Problem lösen? Ich habe versucht, Größe insted sizeof zu verwenden (int) * 2, aber ich bekomme die gleichen Ergebnisse.

Wenn ich versuche, es zu benutzen y nennen es einfach wie:

CreateSpace(5, /test1);

Es macht den Raum / test1 schaffen, aber ich erhalte Fehler, wenn ich versuche, eine bestimmte Größe mit ftruncate (int aux, off_set n) zu setzen und immer errno 22 erhalten.

Veröffentlicht am 07/06/2018 um 01:24
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more