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