PDA

View Full Version : Limitare il numero di istanze di un programma


Damage92
29-11-2009, 15:33
Voglio fare in modo che ci sia in esecuzione una sola istanza del mio programma, e se esso viene avviato ulteriormente, il focus passi all'istanza già in esecuzione.
Il programma utilizza le gtk, è scritto in C, e per ora solo su linux, ma forse lo porterò su altri sistemi.
Come posso fare?
grazie :)

morskott
29-11-2009, 18:00
La prima puzzonata che mi viene in mente è che all'avvio del programma controlli se esiste o meno un determinato file, se non esiste lo crea e alla chiusura del programma lo cancella, se invece lo trova vuol dire che è stato creato da una precedente istanza non chiusa del programma, quindi si chiude senza far niente altro.

Naturalmente se il programma si chiude in modo non convenzionale (crash per esempio) il file non lo cancella e il sistema salta, se per esempio sai a priori quanto in media il programma sta in esecuzione normalmente potresti scrivere in questo file la data e ora di avvio e così la seconda istanza se vede questo file sa se è un residuo di un crash o se è effettivamente in esecuzione contemporanea un'altra istanza.

Un po naive ma in certi casi potrebbe funzionare

blackgin
29-11-2009, 19:38
Potresti leggerti il sorgente di qualche programma tipo gnome-system-monitor per capire come costruisce la lista dei processi. Così basterebbe controllare se il tuo programma figura in questa lista.

cionci
30-11-2009, 00:10
Thread chiuso
|
V
http://www.hwupgrade.it/forum/showthread.php?t=1649196