当我执行程序./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进程信息,然后获取调试值)。
答案 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);
}