saber nombre de proceso (sabiendo PID)

View: New views
4 Messages — Rating Filter:   Alert me  

saber nombre de proceso (sabiendo PID)

by Carles Pina i Estany-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hola,

Tengo una aplicación hecha en Qt (NO en KDE Libs :-|) y me gustaría que
sólo hubier una instancia.

Lo que tengo hecho ahora es escribir un fichero con su PID cuando
funciona. Si el usuario vuelve a arrancar y encuentra el PID, manda una
señal SIGUSR1 al PID y la aplicación se restaura.

Me gustaría asegurar que el PID es de mi aplicación y no de otras
aplicaciones para:
a) estar seguro que mi aplicación se restaura
b) si no es mi aplicaicón podría matar una aplicación

Tengo dos ideas:
a) ps auxw, parsear desde C++, etc. (no me gusta y poco portable)
b) mirar en /proc/PID/status, la línea "Name" y tener el nombre. No es
muy portable, sólo Linux.

Hasta donde he visto Qt no tiene un get_name_from_pid :-), como lo
haríais? Sé que las KDE libs saben hacer lo de una aplicación a la vez
pero creo que tienen hecho un método más complejo que lo que necesito
(pero no he mirado el código, aún!) (me gustaría no tener que usar
memoria compartida, sockets unix, etc. si lo puedo hacer con sólo
señales y ficheros)

Gracias,

--
Carles Pina i Estany GPG id: 0x8CBDAE64
        http://pinux.info        Manresa - Barcelona
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: saber nombre de proceso (sabiendo PID)

by Mario Teijeiro Otero :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Buenas
        en /proc/$PID/cmdline tienes la línea de comandos con qué se lanzó
el proceso corresponiente al número de PID. Si lees la primera cadena de
textos te daría el argv[0], o sea, el nombre del programa.

        Lo malo es que, HDYS, como tú cies, no es portable ya que es algo específico
a linux.

Sobre el manejo de una KUniqueApplication, lo hacen a través de DCOP. De todas
maneras, quizás se podría hacer utilizando la librería SM de las X, que es la
encargada de manejar las sesiones.

        Echa un vistazo en freedesktop para realizarlo de manera estandar.


Un saludo


On Friday 16 May 2008 16:09:27 Carles Pina i Estany wrote:

> Hola,
>
> Tengo una aplicación hecha en Qt (NO en KDE Libs :-|) y me gustaría que
> sólo hubier una instancia.
>
> Lo que tengo hecho ahora es escribir un fichero con su PID cuando
> funciona. Si el usuario vuelve a arrancar y encuentra el PID, manda una
> señal SIGUSR1 al PID y la aplicación se restaura.
>
> Me gustaría asegurar que el PID es de mi aplicación y no de otras
> aplicaciones para:
> a) estar seguro que mi aplicación se restaura
> b) si no es mi aplicaicón podría matar una aplicación
>
> Tengo dos ideas:
> a) ps auxw, parsear desde C++, etc. (no me gusta y poco portable)
> b) mirar en /proc/PID/status, la línea "Name" y tener el nombre. No es
> muy portable, sólo Linux.
>
> Hasta donde he visto Qt no tiene un get_name_from_pid :-), como lo
> haríais? Sé que las KDE libs saben hacer lo de una aplicación a la vez
> pero creo que tienen hecho un método más complejo que lo que necesito
> (pero no he mirado el código, aún!) (me gustaría no tener que usar
> memoria compartida, sockets unix, etc. si lo puedo hacer con sólo
> señales y ficheros)
>
> Gracias,


_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: saber nombre de proceso (sabiendo PID)

by Carles Pina i Estany-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hola,

On May/18/2008, Mario Teijeiro Otero wrote:

> Sobre el manejo de una KUniqueApplication, lo hacen a través de DCOP. De todas
> maneras, quizás se podría hacer utilizando la librería SM de las X, que es la
> encargada de manejar las sesiones.

interesante hacerlo mediante las X. Imagino que es la libreria
libsm-dev.

> Echa un vistazo en freedesktop para realizarlo de manera estandar.

Si tienes alguna referencia en concreto de freedesktop mandamela por
favor, sinó buscaré más. He dado una mini-vuelta en la web de
freedesktop sin éxito :-)

Muchas gracias,

--
Carles Pina i Estany GPG id: 0x8CBDAE64
        http://pinux.info        Manresa - Barcelona
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: saber nombre de proceso (sabiendo PID)

by Carles Pina i Estany-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hola,

On May/18/2008, Mario Teijeiro Otero wrote:

> Echa un vistazo en freedesktop para realizarlo de manera estandar.

finalmente hoy he hecho esto. Lo he hecho usando dbus (la implementación
de Qt). Genial! muy fácil, sencillo, me ha resuelto muy bien el
problema. Mucho mejor que cosas a más bajo nivel que pensé (señales,
sockets Unix; o boost, etc.)

Gracias por las recomendaciones,

--
Carles Pina i Estany GPG id: 0x8CBDAE64
        http://pinux.info        Manresa - Barcelona
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es