c++ - 解析 proc/pid/cmdline 获取函数参数

标签 c++ linux procfs

我正在尝试使用 cmdline 中的数据提取调用应用程序所使用的参数。

如果我像这样启动一个应用程序实例:

myapp 1 2

然后 cat 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")

不做任何其他事情所以...

最佳答案

/usr/bin/strings/proc/1337/cmdline 通常为我完成这项工作。

关于c++ - 解析 proc/pid/cmdline 获取函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1406635/

相关文章:

c++ - 应该为每个操作传递或创建 SSE 数据类型吗?

c++ - 在 32 位环境中链接到 32 位共享目标文件会产生 ELFCLASS64 错误

c - 如何从 C 中的 proc 文件中读取最后 n 个字节

linux - Minicom 黑色背景颜色不受尊重

memory-management -/proc/[pid]/status :RssAnon and/proc/[pid]/smaps_rollup:Anonymous? 不一致是什么原因

linux - 如何重定向来自另一个 tty 的输入?

c++ - 带有 typedef 类型的 std::map?

c++ - OpenGL 纹理映射不起作用

c++ - std::move、std::forward、值类型和模板推导

c++ - DBus与其他进程间通信方式的区别