Hallo Leute,
ich ärgere mich schon den ganzen Tag mit folgendem Problem rum:
Folgende Situation: Mein Programm initialisiert in der main()-Funktion einen Semaphorvektor und setzt via semctl den ersten Semaphorwert auf "1". Die main()-Funktion ihrerseits erzeugt mit fork() einen zweiten Prozess, der den Semaphorwert mit semop um eins verringert, d.H. auf "0" setzt. Das funktioniert so weit.
Unverständlich ist mir allerdings, dass der Semaphorwert nach dem Beenden des geforkten Prozesses automatisch wieder den Wert "1" annimmt. Ist dieses Verhalten irgendwo so definiert?
Viele Grüße, Matthias
Am 21. Juni 2003 schrieb Matthias Petermann:
ich ärgere mich schon den ganzen Tag mit folgendem Problem rum:
:-) Bs-Beleg immernoch nicht fertig?
Folgende Situation: Mein Programm initialisiert in der main()-Funktion einen Semaphorvektor und setzt via semctl den ersten Semaphorwert auf "1". Die main()-Funktion ihrerseits erzeugt mit fork() einen zweiten Prozess, der den Semaphorwert mit semop um eins verringert, d.H. auf "0" setzt. Das funktioniert so weit.
Unverständlich ist mir allerdings, dass der Semaphorwert nach dem Beenden des geforkten Prozesses automatisch wieder den Wert "1" annimmt. Ist dieses Verhalten irgendwo so definiert?
Ich denke, das ist die SEM_UNDO-Funktion, die der Kernel verwaltet, d.h. er gibt die von diesem Prozess "belegte Ressource" wieder frei, wenn der Prozess stirbt.
Man möge widersprechen, falls ich micht irre.
Freundlich grüßend,
Erik
Hallo Erik,
On Saturday 21 June 2003 20:21, Erik Schanze wrote:
:-) Bs-Beleg immernoch nicht fertig?
...jetzt schon :-)
Ich denke, das ist die SEM_UNDO-Funktion, die der Kernel verwaltet, d.h. er gibt die von diesem Prozess "belegte Ressource" wieder frei, wenn der Prozess stirbt.
vielen vielen Dank. Ich Idiot hab mir meine up- und down- Funktionen gar nicht mehr angeschaut, aber genau das SEM_UNDO-Flag führt zum unerwünschten Verhalten, was lt. Manpage auch völlig korrekt ist.
[x] BS2-1 Beleg done.
Jetzt schnell noch eine Doku geschrieben, dann kann ich den Echoserver morgen noch fertigmachen.
Viele Grüße & nochmal Danke, Matthias
lug-dd@mailman.schlittermann.de