首页 文章

从linux中的pid处理进程名称

提问于
浏览
24

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

5 回答

  • 13

    要获取进程ID的进程名称,请说9000使用此命令:

    ps -p 9000 -o comm=
    
  • 23

    在linux上,你可以查看 /proc/ . 尝试输入 man proc 以获取更多信息 . /proc/$PID/cmdline 的内容将为您提供运行 $PID 进程的命令行 . 还有 /proc/self 用于检查自己:)

    另一种方法(例如在Mac OS X上)是使用 libproc . 见libproc.h .

  • 8

    虽然这个问题已得到解答,但我想补充2美分 .

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

  • 2

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

    没有任何通用的方法来执行此unix .
    每个操作系统都有不同的处理方式,有些非常难 . 你提到Linux了 . 使用Linux,信息位于/ proc文件系统中 .
    要获取进程ID 9999的命令行,请阅读文件 /proc/9999/cmdline .

相关问题