[ indy @ 31.05.2005. 11:41 ] @
| pozdrav,
želim da napravim aplikaciju čija samo jedna instanca može biti aktivna u jednom trenutku. aplikacija je pisana u C++, koristeći fltk biblioteke (probao sam da koristim njihov Mutex, ali linkovanje baca neke greške).
Zna li neko način da se to fino uradi?
Meni je padalo na pamet da postavim da sluša na nekom portu, pa će svaka sledeća da pada, ali to nije toliko lepo, nit elegantno.
Hvala. |
[ djoka_l @ 31.05.2005. 14:50 ] @
Postoji funkcija lockf koja može da ti pomogne. Bilo bi zgodno da u fajl na fajl sistemu upišeš PID procesa koji radi na primer /var/lock/<ime_tvoje_aplikacije>/PID, ili nešto slično.
Druga caka je da lock realizuješ kao kreiranje linka na fajl (to može da bude link na bilo koji fajl, ali ti ne preporučujem da baš uzmeš /etc/passwd ili /etc/shadow). Kreiranje linka bi trebalo na unixu da bude atomska operacija. Na primer, ako ti lockf ne radi kako bi trebalo, onda bi mogao lokovanje da uradiš tako što prvo pokušaš da kreiraš link /var/lock/<ime_tvoje_aplikacije>/running na fajl /var/lock/<ime_tvoje_aplikacije>/PID, pa ako uspeš, u sledećem koraku upišeš pid u fajl.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.