PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Linux C] Problem mit Semaphoren und semctl


Aqualon
2005-09-02, 16:49:50
H!

Ich habe ein Problem bei der Verwendung von XSI-Semaphoren und semctl(). Folgender Code-Ausschnitt:

...
if((mutex = semget(IPC_PRIVATE, 1, IPC_CREAT))==-1) perror("semget");

if(semctl(mutex, 0, SETVAL, 1) == -1) perror("semctl");
...
Das semget() scheint noch zu funktionieren, aber beim semctl() wirft er dann ein Permission Denied, das ich mir nicht so ganz erklaeren kann.

Ich habe auch mal versucht, ueber semctl() die semid_ds struct ausgeben zu lassen, die in einem Feld die permissions enthaelt, aber da kommt auch wieder Permission Denied. Anscheinend habe ich also gar keine Rechte darauf zuzugreifen.

Weiss jemand, woran das liegen koennte?

Aqua

Aqualon
2005-09-02, 23:47:18
Problem erledigt, wenn man bei semget nur IPC_CREAT angibt, bekommt man keine Rechte zum Zugriff auf die Semaphore. IPC_CREAT|0777 geht dann z.B.

Aqua

SGT.Hawk
2005-09-03, 01:22:10
was ist denn das für eine API?
Wir haben das normale POSIX (PTHREAD) API genommen.

Aqualon
2005-09-03, 07:48:00
XSI sind Extensions zum ISO C Standard (http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap02.html#tag_02_01_04).

Man kann das natürlich auch mit pthread Mutex Variablen usw. erledigen. Weiß auch nicht, welche der beiden Herangehensweisen Vor- bzw. Nachteile aufweist.

Aqua