C Uruchomienie programu tylko raz w tym samym czasie

Witam, poszukuje rozwiazania ktorym moglbym zablokowac mozliwosc uruchomienia wiecej niz raz danego programu w tym samym czasie. Czyli na chlopski rozum jesli odpalam ./serwer.x, i on dziala, to przy drugim uruchomiieniu wyskakuje jakis komunikat a proces sie nie uruchamia. Ponoc uzywa sie do tego semaforow (pisze pod linuxem) ale nie wiem jak?

 

Pozdrawiam.

Możesz utworzyć plik blokady w jakimś katalogu, a ten plik  mógłby zawierać pid uruchomionego procesu. Przy wyłączaniu procesu(exit), plik byłby usuwany.

Można do tego użyć semaforów (aczkolwiek to nie jedyne wyjście, patrz post wyżej). O co chodzi? Nazwane semafory w Linuksie są dzielone między procesami (respektując uprawnienia), dzięki czemu można sprawdzać czy semafor już istnieje (lub czy jest/nie jest zajęty) i odpowiednio zareagować. Wystarczy użyć sem_open z flagami O_CREAT i O_EXCL i sprawdzać kod błędu. Przykład: http://pastebin.com/8LAyYyBU

Możesz spróbować czegoś, co zostało wymienione tutaj: http://stackoverflow.com/questions/6898337/c-determine-programmatically-if-a-program-is-running