我试图通过cmdline中的数据提取应用程序调用时使用的参数。
如果我像这样启动一个应用程序实例:
myapp 1 2
然后查看myapp的cmdline,我会看到类似于myapp12的东西。
我需要提取这些值,并使用以下代码来完成:
pid_t proc_id = getpid();
sprintf(buf,"/proc/%i/cmdline",proc_id);
FILE * pFile;
pFile = fopen (buf,"r");
if (pFile!=NULL)
{
fread(buf,100,100,pFile);
cout << "PID " << proc_id << endl;
string str = buf;
cout << buf << endl;
size_t found=str.find_last_of("/\\");
cout << " file: " << str.substr(found+1) << endl;
fclose (pFile);
}
但我只得到了应用程序名称,没有参数...
更新来自回答:
好吧,我的问题现在似乎是如何读取cmdline文件而不停在第一个NULL字符处...
fopen(cmdline, "rb")
它不会做任何其他事情,因此...
fread(buf,1,100,pFile);
(size=1,count=缓冲区长度)。 - opello