Tengo un nombre de proceso y debo enviar una señal kill()
a ese proceso, pero necesito su PID para llamar al kill()
. Solo me gustaría utilizar:Buscar PID de un proceso por nombre sin usar popen() o system()
popen("pidof process_name");
como la última cosa. ¿Hay alguna otra forma de averiguar el proceso 'PID? Una forma en que podría pensar es enviar una solicitud de socket a ese proceso y solicitar su PID.
La otra forma es un poco complicada para un código simple que estoy escribiendo: hacer lo que realmente está haciendo pidof command's source code (usa una llamada a la función find_pid_by_name()
pero eso está haciendo muchas cosas).
Si hay una solución simple es posible, tengo que hacer esto:
system("pkill <process_name>");
y comprobar su código de retorno. ¿Pero estará disponible pkill en todas las máquinas Linux?
debería ser bastante directo usando boost :: regex y boost :: filesystem creo que –
una vez busqué en la salida strace de pidof, y pensé que lo haría de la misma manera. (puede haber cambiado entre medio, sin embargo) –
lecturas de procfs son MUY baratas. Para este propósito en particular, no tendrías que comenzar realmente a leer hasta que llegues a PID 1000, entonces tienes 40 - 60 para examinar. No lo piense como leer un FS convencional, es mucho más barato. –