首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux如何获得进程参数与pid?

问linux如何获得进程参数与pid?
EN

Stack Overflow用户
提问于 2016-03-07 10:05:43
回答 1查看 176关注 0票数 1

当我执行程序./测试-debug 7 -m播放器时,我使用C语言如何获得-m -debug的参数值?

我试过:

代码语言:javascript
复制
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/ pid /cmdline“可以返回正确的值( mytest -debug 7 -m player ),我希望在另一个进程中获得,而不是在process.such的主要方法中,因为在进程mytest2中,我希望用pid (通过pid= getpid()和pid获取mytest进程信息,而不是获得调试值)获得我自己的进程调试值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-07 10:23:55

来自proc(5)

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

因此,这段代码应该可以工作:

代码语言:javascript
复制
for (i = 0; i < size; i++) {
    if (!i)
        printf("%s\n", name);
    else if (!name[i - 1])
        printf("%s\n", name + i);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35840847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档