por explorer » 2006-08-18 18:30 @812
Dos formas rápidas:
* Pedir un listado de los procesos actuales de la máquina. Si nuestro programa está entre ellos, hay que descartar el que se está ejecutando ahora. Si aún así queda otro nombre, es que ya se estaba ejecutando. Esta es la opción más segura, aunque no te garantice que el promer programa no esté corriendo porque se haya colgado.
* Otra forma sería con semáforos o con algún fichero que haga de bandera. Si a la de ejecutarlo existe un fichero bandera, es que nuestro programa ya se está ejecutando. Esto tiene el peligro de que el primer programa se puede haber muerto y no borró el fichero bandera.
Estos dos mandamientos se resumen en uno: en los sistemas linux actuales los procesos crean en /var/run un fichero con el mismo nombre que el proceso, por ejemplo, programa.pid, y dentro de él guardan el pid (número de proceso) de ese proceso. Si, a la hora de ejecutar un nuevo proceso, no existe el fichero, seguimos adelante. Si existe, lo leemos y comprobamos que el proceso con ese pid existe o no, y actuamos en consecuencia.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES