linux如何用pid获取进程参数?

时间:2016-03-07 10:05:44

标签: c linux

当我执行程序./test -debug 7 -m player时,我用C语言如何获取-m -debug的参数值?

我试过了:

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

但它只返回process.exec的名称" xargs -0< / proc /进程/ CMDLINE"可以返回正确的值(mytest -debug 7 -m player),我想进入另一个进程,而不是进程的主要方法。例如,在进程mytest2中,我想用pid获取mytest进程调试值(通过pid = getpid()并通过pid获取mytest进程信息,然后获取调试值)。

1 个答案:

答案 0 :(得分:2)

来自 proc(5)

  

命令行参数在此文件中显示为一组字符串   由空字节('\ 0')分隔,后面还有一个空字节   最后一串。

所以,这段代码应该有效:

for (i = 0; i < size; i++) {
    if (!i)
        printf("%s\n", name);
    else if (!name[i - 1])
        printf("%s\n", name + i);
}