Pregunta

Estoy tratando de identificar cuándo se está ejecutando un proceso en particular, según sus argumentos, en Mac OS X.Puede haber varios procesos ejecutándose con el mismo nombre, pero solo uno tendrá los argumentos que estoy buscando.Los procesos no pertenecen al mismo usuario que ejecutará mi código.No habrán modificado su argv de ninguna manera.

El comando 'ps' muestra exactamente la información que necesito.Pero preferiría no tener que generar 'ps' y analizar su salida.

Originalmente probé la solución de esta pregunta, usando sysctl, pero resulta que solo funciona para procesos de tu propiedad;ver mi otra pregunta para más información.

Entonces, ¿cómo obtiene ps información argv para procesos propiedad de otros usuarios?

¿Fue útil?

Solución

En Mac OS X ps se setuid 0, que es como se obtiene la información para todos los procesos. Usted tiene que ejecutar como root para obtener esa información, por lo que tampoco tiene que ser setuid 0 o ejecutar su utilidad con sudo.

La mejor manera es probablemente sólo para ps desove y analizar la salida, incluso si no lo hace realmente quiere;)

Otros consejos

ps BSD (utilizado en Mac OS X) utiliza kvm_getargv() para obtener los argumentos de línea de comandos para un proceso.

Esta es la llamada real: fuente ps código . Buscar kvm_getproc2.

OpenBSD página del manual para esta familia de funciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top