PDA

Ver la Versión Completa : Como evitar 2 instancias de mi programa


pcicom
19-09-2006, 06:02:04
Estoy desarrollando un APP en LINUX con freepascal y necesito evitar la ejecucion de mi programa en mas de una instancia...

es decir que solo se pueda ajecutar una vez y la siguiente no se ejecute...

si alguien conoce una rutina y/o la forma de como hacerlo, agradecere me expliquen que funciones utilizar...

Pascalizado
01-10-2006, 21:13:16
Cuando se inicia una instancia que guarde un archivo temporal por ejemplo en el directorio "/ tmp", con el numero de PID del proceso dentro de este archivo, entonces cuando ejecutas la segunda instancia esta debe verificar que el archivo exista y que el numero PID que este almaceno este activo si esto es afirmativo el programa se cerrara. Puedes utilizar el componente Tprocess para facilitarte la obtencion del PID y demas.

Aunque tiene una contra: si el programa se cuelga no borrara el archivo al salir y si al ejecutarlo devuelta puede que el PID que esta almacenado en el archivo este activo debido a que lo tiene otro proceso.

Bueno espero haberme explicado bien y que te haya servido. Saludos

Bicho
01-10-2006, 21:25:25
Hola, tambien puedes revisar este (http://www.clubdelphi.com/trucos/index.php?id=169) truco,

o éste (http://www.clubdelphi.com/foros/showthread.php?t=34295) hilo

o un poco de todo, de lo que aparece en el buscador del clubdelphi (http://www.clubdelphi.com/foros/search.php), y te haces una idea aproximada de las alternativas y elijes la que mejor te convenga.

Saludos

Pascalizado
03-10-2006, 19:53:45
Hola devuelta, otra que recien se me ocurre es: con el componte TProccess tiras la instruccion PS grep | <Nombre_programa> y te lista todos los procesos con esos nombre y si aparecen mas de dos cierras el programa.

Saludos