如何从他的PID进程名称? 比如我执行猫FILE1.TXT,但我想,因为它在系统中的PID弄清楚,猫命令及其参数。 是否有一个结构,以确定它或类似的东西? 任何的想法?
Answer 1:
还有就是不要做任何UNIX的一般方式。
每个操作系统都有不同的方式来处理它,有些是很辛苦。 你尽管提Linux操作系统。 对于Linux,该信息是在/ proc文件系统。
要获取进程ID 9999的命令行,读取文件/proc/9999/cmdline
。
Answer 2:
在Linux上,你可以看看在/proc/
。 试着输入man proc
以获取更多信息。 的内容/proc/$PID/cmdline
会给你进程的命令行$PID
与运行。 还有/proc/self
审查自己:)
另一种(例如,在Mac OS X)是使用libproc
。 见libproc.h 。
Answer 3:
POSIX C不支持给出一个标准API,用于通过PID获得进程名。
在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;
}
Answer 4:
为了得到一个进程ID的进程名说9000,使用这个命令:
ps -p 9000 -o comm=
Answer 5:
虽然这个问题已经回答了,我想补充我的2美分。
在我的情况下,当过程1111
创建过程22222
通过pipe
(至少这是我听到的) /proc/2222/cmdline
不给正确的进程名称,而是给出了类似1111_1
。 我要使用/proc/2222/comm
以获得正确的进程名。
Answer 6:
使用在Linux下面的命令
ls -l /proc/[pid]/exe
它会给进程/应用程序名称的名称
文章来源: Process name from its pid in linux