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
.