System V IPC shmat: Permission denied

Diskutiere System V IPC shmat: Permission denied im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hallo zusammen! Ich will mithilfe von System V IPC einen shared Memory Bereich anlegen. Leider bekomme ich immer ein "Permission denied" wenn...

  1. #1 simonwiese, 20.11.2008
    simonwiese

    simonwiese Grünschnabel

    Dabei seit:
    20.11.2008
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo zusammen!

    Ich will mithilfe von System V IPC einen shared Memory Bereich anlegen. Leider bekomme ich immer ein "Permission denied" wenn ich den Prozess als normalen Benutzer laufen lassen will.

    Das Programm sieht im Grunde genommen wie folgt aus:

    Code:
    #include <iostream>
    using namespace std;
    #include <errno.h>
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/shm.h>
    
    int main() {
    	
    	//generate magic key
    	key_t key = ftok("/tmp", 434);
    
    	cerr<<"Key: "<<(int)key<<endl;
    
    	int shID=shmget(key, sizeof(double)*6, IPC_CREAT | IPC_EXCL);
    
    	if (shID < 0) {
    		cerr<<"Couldn't get shmID: "<<strerror(errno)<<endl;
    	} else {
    		cerr<<"shID: "<<shID<<endl;
    		double *shm_angles= (double *)shmat(shID, NULL, SHM_R | SHM_W);
    
    		if (shm_angles == (double *)-1) {
    			cerr<<"Couldn't attach shared memory: "<<strerror(errno)<<endl;
    		}
    		shmctl(shID, IPC_RMID, 0);
    	}
    
    	
    
    	return 0;
    }
    
    Ausgabe sieht dann zB mal so aus:
    Key: 738287937
    shID: 360449
    Couldn't attach shared memory: Permission denied
    
    
    Problem ist das shmat(...) immer ein "Permission denied" wirft (außer man ist superuser..). Ich habs schon mit verschiedenen Flags versucht und auch schon bei google danach gesucht find aber keine Lösung.

    Weiß einer von euch wo mein Fehler ist oder warum ich nicht ausreichend rechte haben soll??

    Danke im Voraus!

    Simon


    PS: Meine Quellen:
    https://www-rz.uni-hohenheim.de/betriebssysteme/unix/books/galileocomputing_unix_guru/node393.html
    http://www.informatik.uni-osnabrueck.de/um/95/95.3/bischof_ipc/bischof_ipc.html
     
  2. #2 SkydiverBS, 25.11.2008
    SkydiverBS

    SkydiverBS Tripel-As

    Dabei seit:
    15.01.2005
    Beiträge:
    207
    Zustimmungen:
    0
    Ort:
    Freising
    Hallo Simon,

    du musst beim Aufruf von shmget noch die Berechtigungen für das shared memory-Segment angeben, dann sollte es funktionieren.

    Beispielsweise so, um dem Benutzer Lese- und Schreibzugriffe zu gewähren:
    Code:
    int shmid = shmget(key, size, IPC_CREAT | IPC_EXCL | 0600);
    
    Gruß,
    Philip
     
Thema:

System V IPC shmat: Permission denied

Die Seite wird geladen...

System V IPC shmat: Permission denied - Ähnliche Themen

  1. NFS durch Symlink auf lokales Dateisystem entlasten

    NFS durch Symlink auf lokales Dateisystem entlasten: Hallo zusammen, ich bin neu hier und auch nicht sicher ob ich mich hier im richtigen Forum befinde... Darum schon mal sorry wenn es eigentlich...
  2. Linux "vergisst" Dateisystem?

    Linux "vergisst" Dateisystem?: Hallo zusammen! Aufgrund des von mir hier beschriebenen Problems habe ich nun die halbe Nacht "durchgearbeitet", da ein komplett neues Konzept...
  3. Problem mit Windows auf Ordner auf dem Linuxsystem zuzugreifen

    Problem mit Windows auf Ordner auf dem Linuxsystem zuzugreifen: Ich mache gerade meine ersten Schritte mit Linux und würde gerne auf Dateien meines Linuxsystems auch mit Windows zugreifen, ich bin am...
  4. Systempartition um den Speicherplatz der zweiten Disk erweitern

    Systempartition um den Speicherplatz der zweiten Disk erweitern: Guten Tag liebe Leute Ich habe einen virtuellen Server mit 2 Disk a je 25GB. Nun möchte ich, das meine Hauptpartition um diese zusätzlichen 25GB...
  5. Debian VM Klonen und parallel betreiben? Systemanpassungen

    Debian VM Klonen und parallel betreiben? Systemanpassungen: Hallo, ich habe vor eine Debian Maschine als Prototyp aufzusetzen... (als vSphere VM).... Diese Maschine will ich dann x-mal klonen und in div....