psinfo_t Solaris 在其字段中不包含完整的进程名称

2023-12-15

将进程信息从 psinfo 数据文件 (/proc/%d/psinfo) 从 Solaris 中的 procfs.h 读取到 struct psinfo_t 时,未在 psinfo_t 结构的字段 pr_fname 中获取完整进程名称。

完整的 psinfo_t 结构定义位于以下站点:

http://docs.oracle.com/cd/E19253-01/816-5174/6mbb98ui2/index.html

仅当进程名称小于等于 15 个字符时,我才能获取完整的进程名称,否则,如果进程名称超过 15 个字符,则我只能获取进程名称的前 15 个字符,其余字符将被截断。

我正在使用的代码如下:

#include <iostream>
#include <cstdlib>
#include <procfs.h>
#include <fstream>
#include <string>

using namespace std;

int main(int argc, char* argv[])
{
    // get the pid from command line
    int pid  = atoi(argv[1]);

    // create the pstatus struct from procfs
    psinfo_t info;

    char file[100];
    sprintf(file, "/proc/%d/psinfo", pid);
    ifstream in(file);
    if (in)
    {
        in.read((char*)&info, sizeof(psinfo_t));
        in.close();

        cout << "My Name: " << info.pr_fname << endl;
    }
    else
    {
        cout << "Process Not Exists!" << endl;
    }

return 0;
}

我是否必须从 procfs 文件系统读取其他文件(除了 psinfo)才能获取完整的进程名称。 另外,如果我从命令行使用 belwo ps 命令,那么我可以获得完整的进程名称:

ps -p 4970 -o comm

但我不想通过在代码中执行 ps 命令来获取进程名称。 我很好奇 ps binary 从哪里获取进程名称。


The pr_fname领域的psinfo_t结构体长度为 16 个字节,每源代码:

#define PRFNSZ      16  /* Maximum size of execed filename */

因此它实际上会被截断为最多 15 个字符。

您可以从以下位置获取实际二进制文件的名称/proc/PID/map。对于 32 位进程,执行的二进制文件将映射到地址0x00010000.

您可以浏览源代码ps at http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/ps/如果您想查看它在哪里找到数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

psinfo_t Solaris 在其字段中不包含完整的进程名称 的相关文章

随机推荐

  • 如何查找任何 Android 应用程序的用户花费时间

    您好 我正在开发一个应用程序 我需要查找用户在 Facebook 等特定应用程序上花费的时间 每当用户花费 x 分钟时 我想给用户一些奖励 Android 有什么好的方法可以实现这一点吗 正如问题中所指出的检测其他应用程序何时打开或启动 您
  • Rails 3 后台作业管理器

    有谁知道与 Rails 3 一起使用的后台作业管理器吗 我听说过 Starling 和 Workling 但我没有看到 Rails 3 的分支 I used 本文让delayed job 一个common Rails 2 gem 用于对稍后
  • 方差分析 (rstatix) 中“mutate()”输入“数据”的问题

    这真让我抓狂 我在用anova test from rstatix它告诉我 我的专栏不在那里 而它们显然在那里 这就是我的数据框的样子 ID c 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 Form c A A
  • “导入keras”和“导入tensorflow.keras”有什么区别

    我想知道 使用从tensorflow导入keras有什么区别import tensorflow keras或者只是 pip 单独安装 keras 并使用导入它import keras因为到目前为止两者似乎都工作得很好 我注意到的唯一区别是我
  • 访问 H2 数据库架构

    我目前正在使用 java 访问嵌入式 H2 数据库jOOQ生成表类等 我当前可以执行诸如 create select from TEST fetch 在我的代码中 返回结果等 但是我无法查询信息模式 我可以使用 H2 控制台访问它 并且为给
  • 在 firebase 上构建数据的最佳方式是什么?

    我是 firebase 的新手 我想知道构建数据的最佳方式是什么 我有一个简单的例子 我的项目有申请人和应用程序 1个申请人可以有多个申请 我如何在 firebase 上关联这两个对象 它像关系数据库一样工作吗 或者在数据设计方面需要完全不
  • 如何将外部样式表链接到多个页面和文件夹?

    我正在构建一个相当大的网站 其中有很多页面和文件夹 我有 1 个样式表 如何将样式表添加到这些文件夹的 全部 在我开始将页面放入单独的文件夹中之前 我没有遇到此问题 现在每个页面都有自己的文件夹 它不再读取我的样式表 除非它位于同一文件夹中
  • Delphi XE2 的 FastString 替代品

    当我问这个问题不久前 FastString 单元来解决我的问题 现在我开始将我的软件从 D7 迁移到 XE2 我的问题是 既然 FastString 似乎不再能解决问题 我现在有什么替代方案 或者 更乐观的是 Delphi 本身是否解决了这
  • Git 和多个存储库

    我正在使用 github 来存储我的 PowerShell 配置文件 我发现posh vcs我想在我的实际实现之上使用它 我希望能够合并来自posh vcs到我现在的环境 处理这个问题的最佳方法是什么 我的文件只有一个存储库 而另一个文件夹
  • 使用泛型时无法解析方法

    我正在尝试为我的项目实现一棵树 该树将包含经过一些移动后处于不同棋盘状态的节点 现在我的项目结构如下 src Agent Support Test Threes Tree java Some class java some class Bo
  • 修复 Sublime Text 2 行结尾?

    这是我的Settings User config auto indent true color scheme Packages Color Scheme Default Twilight tmTheme default line endin
  • MyFaces Facelet 包含中的 NullPointerException

    我正在尝试从以下位置迁移简单的 JSF2 2 原型Mojarra2 2 5 工作正常 MyFaces2 2 3 但是空指针异常 occurs 我通常使用 Mojarra 做的是包含 注入 以编程方式容器内的 JSF 页面 示例包含页面 包含
  • JOIN 比 WHERE 更快吗?

    假设我有两个链接的表 一个表有另一个表的外键 CREATE TABLE Document Id INT PRIMARY KEY Name VARCHAR 255 CREATE TABLE DocumentStats Id INT PRIMA
  • 可变高度的浮动元素将兄弟姐妹向下推

    我有 6 个元素 应该会产生两行 每行 3 个元素 所以我将它们浮动 但元素的内容变化很大 当一个较高的元素阻止后续同级元素一直向左浮动时 布局就会中断 这是 CSS 示例 figure width 30 float left margin
  • n 个皇后的快速启发式算法 (n > 1000)

    我写了两个程序 通过回溯算法将棋盘上的 n 个皇后放在一起 没有任何威胁 但这对于大 n 来说非常沉重 最后你可以运行 100 个皇后 通过爬山算法将棋盘上的 n 个皇后放在一起 没有任何威胁 这个算法比过去的解决方案更好 但是 300 个
  • Jasmine 测试在 VS2012 + Resharper + PhantomJS 中运行失败

    我尝试在 vs2012 的 resharper 7 中运行 jasmine 单元测试 但失败了 resharper phantomjs is running it in autogenerated url which maybe the c
  • 在 Linux 3.x 上挂钩 sys_execve()

    我正在尝试挂钩sys execve 通过修改系统调用表来实现Linux 3 x内核上的功能 问题是sys execve 仅当执行失败时才返回错误代码 使用我正在使用的包装函数 见下文 当sys execve 在有效的可执行文件上调用 它执行
  • 将 json 数据转换为 HTML 表格

    我在 php 中有一个数据数组 我需要在 HTML 表中显示这些数据 以下是示例数据集的样子 Array Array comparisonFeatureId gt 1182 comparisonFeatureType gt Category
  • webBrowser.Navigate 同步

    我想同步调用 webBrowser Navigate string urlString 其中 webBrowser 是 Windows 窗体控件 我这样做 private delegate void NavigateDelegate str
  • psinfo_t Solaris 在其字段中不包含完整的进程名称

    将进程信息从 psinfo 数据文件 proc d psinfo 从 Solaris 中的 procfs h 读取到 struct psinfo t 时 未在 psinfo t 结构的字段 pr fname 中获取完整进程名称 完整的 ps