ver sistema servicios procesos parados los ejecucion corriendo aux c linux process system pid

sistema - Nombre del proceso de su pid en linux



ver procesos parados linux (5)

En linux, puedes buscar en /proc/ . Intenta escribir man proc para obtener más información. El contenido de /proc/$PID/cmdline le dará la línea de comandos con la que se ejecutó el proceso $PID . También hay /proc/self para examinarse a sí mismo :)

Una alternativa (por ejemplo, en Mac OS X) es usar libproc . Ver libproc.h .

¿Cómo obtener un nombre de proceso de su pid? Por ejemplo, ejecuto cat file1.txt, pero quiero averiguar el comando cat y sus argumentos desde su pid en el sistema. ¿Hay una estructura para determinarlo o algo similar? ¿Alguna idea?


Mientras que esta pregunta ha sido respondida, me gustaría agregar mis 2 centavos.

En mi caso, cuando el proceso 1111 crea el proceso 22222 a través de una tubería (al menos esto es lo que escuché), / proc / 2222 / cmdline no da el nombre correcto del proceso, sino que da algo así como 1111_1. Tengo que usar / proc / 2222 / comm para obtener el nombre correcto del proceso.


POSIX C NO admite dar una API estándar para obtener el nombre del proceso por PID.

En Linux, puede obtener el nombre por la API de LINUX Proc: / proc / $ PID / cmdline. Y el código se parece a estos:

const char* get_process_name_by_pid(const int pid) { char* name = (char*)calloc(1024,sizeof(char)); if(name){ sprintf(name, "/proc/%d/cmdline",pid); FILE* f = fopen(name,"r"); if(f){ size_t size; size = fread(name, sizeof(char), 1024, f); if(size>0){ if(''/n''==name[size-1]) name[size-1]=''/0''; } fclose(f); } } return name; }


Para obtener el nombre del proceso de una ID de proceso, digamos 9000, use este comando:

ps -p 9000 -o comm=


No hay ninguna forma general de hacer este unix.
Cada sistema operativo tiene diferentes formas de manejarlo y algunas son muy difíciles. Aunque mencionas Linux Con Linux, la información está en el sistema de archivos / proc.
Para obtener la línea de comando para el ID de proceso 9999, lea el archivo /proc/9999/cmdline .