如何从他的pid中获取进程名称?例如,我执行cat file1.txt,但我想弄清楚cat命令及其参数,因为它在系统中的pid . 是否有结构来确定它或类似的东西?任何的想法?
要获取进程ID的进程名称,请说9000使用此命令:
ps -p 9000 -o comm=
在linux上,你可以查看 /proc/ . 尝试输入 man proc 以获取更多信息 . /proc/$PID/cmdline 的内容将为您提供运行 $PID 进程的命令行 . 还有 /proc/self 用于检查自己:)
/proc/
man proc
/proc/$PID/cmdline
$PID
/proc/self
另一种方法(例如在Mac OS X上)是使用 libproc . 见libproc.h .
libproc
虽然这个问题已得到解答,但我想补充2美分 .
在我的情况下,当进程1111通过管道创建进程22222时(至少这是我听到的),/ proc / 2222 / cmdline没有给出正确的进程名称,而是提供类似1111_1的东西 . 我必须使用/ proc / 2222 / comm来获取正确的进程名称 .
POSIX C不支持为通过PID获取进程名称提供标准API .
在linux中,您可以通过LINUX Proc API获取名称:/ proc / $ PID / cmdline . 代码看起来像这样:
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; }
没有任何通用的方法来执行此unix .每个操作系统都有不同的处理方式,有些非常难 . 你提到Linux了 . 使用Linux,信息位于/ proc文件系统中 .要获取进程ID 9999的命令行,请阅读文件 /proc/9999/cmdline .
/proc/9999/cmdline
5 回答
要获取进程ID的进程名称,请说9000使用此命令:
在linux上,你可以查看
/proc/
. 尝试输入man proc
以获取更多信息 ./proc/$PID/cmdline
的内容将为您提供运行$PID
进程的命令行 . 还有/proc/self
用于检查自己:)另一种方法(例如在Mac OS X上)是使用
libproc
. 见libproc.h .虽然这个问题已得到解答,但我想补充2美分 .
在我的情况下,当进程1111通过管道创建进程22222时(至少这是我听到的),/ proc / 2222 / cmdline没有给出正确的进程名称,而是提供类似1111_1的东西 . 我必须使用/ proc / 2222 / comm来获取正确的进程名称 .
POSIX C不支持为通过PID获取进程名称提供标准API .
在linux中,您可以通过LINUX Proc API获取名称:/ proc / $ PID / cmdline . 代码看起来像这样:
没有任何通用的方法来执行此unix .
每个操作系统都有不同的处理方式,有些非常难 . 你提到Linux了 . 使用Linux,信息位于/ proc文件系统中 .
要获取进程ID 9999的命令行,请阅读文件
/proc/9999/cmdline
.