Autor |
Mensaje |
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Permitir Una Sola Ejecución.
Hola, no sabía que título poner para hacerlo lo más explícito posible.. pero lo que necesitaría saber es de que manera puedo evitar que una aplicación gambas se ejecute por error más de una vez.
O sea, al iniciar mi programa me gustaría verificar si no está corriendo para así continuar con la ejecución y evitar que haya más de una copia corriendo a la vez.
Desde ya muchas gracias.
Marcelo
|
#1 Miercoles, 16 Noviembre 2011, 01:28 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Permitir Una Sola Ejecución.
Marcelo.
A mi lo primero que se me ocurre, es ver que procesos se estan ejecutando en el sistema, en el caso de que haya dos programas con el mismo nombre que el nuestro, informar del "error: ya se esta ejecutando"
Ver estos enlaces:
https://sites.google.com/site/fpopogramadorsistemas/sistemas-de-procesos-en-gnu-linux
http://www.ant.org.ar/cursos/curso_intro/x1845.html
Mas o menos el proceso de comprobacion seria el siguiente:
1) El usuario inicia una copia del programa "prueba.gambas",
Este lo 1º que hace es ver que procesos se estan ejecuntado. Encontrara un proceso llamado "prueba.gambas".
Sigue adelante porque solo hay una copia del programa en ejecucion
2) El usuario inicia una 2º copia del programa "prueba.gambas"
Hace la comprobacion y encuentra dos procesos "prueba.gambas", por lo tanto, hay que indicar que ya existe una copia en ejecucion y termina el programa.
Saludos
última edición por jsbsan el Miercoles, 16 Noviembre 2011, 09:22; editado 4 veces
|
#2 Miercoles, 16 Noviembre 2011, 09:13 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Permitir Una Sola Ejecución.
Otra manera, también muy clásica, es la de crear un pequeño fichero oculto en el home del usuario al abrir la aplicación y eliminarlo al cerrarla. Si en el momento de abrirla se detecta que el fichero existe es que ya hay una copia en marcha. El punto débil de ésta técnica es que si la aplicación aborta, el fichero queda presente y hay que borrarlo a mano...
Suerte
=================== No podemos regresar
|
#3 Miercoles, 16 Noviembre 2011, 09:42 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Permitir Una Sola Ejecución.
Ver información relativa a Lock y Unlock, unas funciones que permiten gestionar este tipo de problemas, basada en la técnica que propone shordi.
http://gambasdoc.org/help/lang/lock
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#4 Miercoles, 16 Noviembre 2011, 16:18 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Permitir Una Sola Ejecución.
otra idea es preguntar por la ruta de los programas en ejecución y ver si ya existe un programa en la misma ruta
por ejemplo
ps -aux | grep rutadelprograma
|
#5 Miercoles, 16 Noviembre 2011, 19:21 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Permitir Una Sola Ejecución.
Uh, que loco, pensaba que podía llegar a haber alguna forma " gambas" de hacerlo
Por lo que imagino entonces me queda o la opción del archivo de Shordi o bien hacer un "ps x" y enviar su resultado a un archivo y en este verificar la existencia del nombre de mi programa. Si existe más de una vez quiere decir que se esta ejecutando por segunda vez. Veremos como puedo implementar esta búsqueda....
Muchísimas gracias
Marcelo
|
#6 Viernes, 18 Noviembre 2011, 22:50 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Permitir Una Sola Ejecución.
Citar: Veremos como puedo implementar esta búsqueda....
Yo lo haria de la siguiente manera:
Creo un modulo "comprobar", con lo siguiente:
Y luego en el formulario principal (conde tengo un boton y un textbox, en mi caso), lo llamo asi:
Saludos
|
#7 Sabado, 19 Noviembre 2011, 10:45 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Permitir Una Sola Ejecución.
hola creo que se puede hacer sin usar el archivo temporal
|
#8 Sabado, 19 Noviembre 2011, 16:48 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Permitir Una Sola Ejecución.
Espectacular Jsbsan!!!! Funciona perfecto!! Es justo lo que necesitaba!!!
La modificacion que hay que hacerle al código es en el comando PS en lugar de "ps a" habría que poner "ps x", con eso se listan todos los procesos.
Y la llamada a la función la dejé de la siguiente manera:
' Verifica que el programa no se esté ejecutando
Dim encontrado As Boolean
encontrado = Funciones.Ejecutando("prueba.gambas")
If encontrado
Message.Error("El programa ya se está ejecutando...")
Quit
Endif
Muchísimas gracias!!!!
Marcelo
|
#9 Lunes, 21 Noviembre 2011, 19:37 |
|
|
|