从Linux中的PID进程名称

如何从他的PID获取进程名称? 例如,我执行cat file1.txt,但是我想知道cat命令及其参数,因为它的系统中有pid。 有没有一个结构来确定它或类似的东西? 任何想法?

没有任何一般的方法来做这个unix。
每个操作系统有不同的处理方法,有些是非常困难的。 你提到Linux虽然。 在Linux中,信息位于/ proc文件系统中。
要获得进程ID 9999的命令行,请阅读文件/proc/9999/cmdline

在linux上,你可以看看/proc/ 。 尝试键入man proc以获取更多信息。 /proc/$PID/cmdline将为您提供运行$PID的命令行。 也有/proc/self检查自己:)

另一种选择(例如在Mac OS X上)是使用libproc 。 请参阅libproc.h 。

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; } 

要获得进程ID say 9000的进程名称,请使用以下命令:

 ps -p 9000 -o comm= 

虽然这个问题已经得到解答,但是我想补充2分钱。

在我的情况下,当进程1111通过管道创建进程22222(至少这是我所听到的)时,/ proc / 2222 / cmdline不会给出正确的进程名称,而是给出类似1111_1的东西。 我必须使用/ proc / 2222 / comm来获取正确的进程名称。