从 /proc//status 获取 pid 和其他进程信息

2023-12-13

我需要从以下位置获取一些信息(pid 只是一个例子,我知道通过许多其他方式获取它要容易得多)/proc/PID/status

我尝试这样做:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>
#include <sys/procfs.h>
#include <sys/signal.h>
#include <sys/syscall.h>
#include <sys/param.h>

int main(){
        char buf[BUFSIZ], buffer[10];
        char pathbase[20], pathdir[20];
        FILE *fp;
        prstatus_t status;

        printf("Process ID: %d\n", getpid());
        printf("Parent process ID: %d\n", getppid());
        printf("Group ID: %d\n", getpgrp());
        printf("Session ID: %d\n", getsid(0));

        strcpy(pathbase,"/proc/");
        sprintf(buffer, "%d", getpid());
        strcat(pathbase, buffer);

        strcpy(pathdir, pathbase);
        strcat(pathdir,"/status");

        if((fp = fopen(pathdir, "r")) == NULL) perror("fopen");
        fread(&status, sizeof(prstatus_t), 1, fp);

        printf("Proces id: %d\n", status.pr_pid);
        printf("Proces ppid: %d\n", (int)status.pr_ppid);
        fclose(fp);
}

这显然是错误的,因为我得到的结果是:

Process ID: 5474
Parent process ID: 3781
Group ID: 5474
Session ID: 3781
Proces id: 1735289198
Proces ppid: 1733560873

事情是/proc/[pid]/status是一个文本文件。所以你的fread正在将文本复制到结构中status- 所以一切看起来都像胡言乱语。

您可以逐行读取状态文件,也可以使用/proc/[pid]/stat文件在一行中包含相同的信息(status供人类消费,同时stat用于程序消耗)。要获取进程 ID(或任何其他信息),您只需标记该单行即可。

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

从 /proc//status 获取 pid 和其他进程信息 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 如何在 JScrollPane 中获取 JScrollPanes 以跟随父级的大小调整

    所以我有一堆JTables Each JTable是在一个里面JScrollPane 然后我将添加其中的每一个JScrollPanes to a JPanel 然后我添加这个JPanel to a JScrollPane然后到另一个JPan
  • 为什么我无法用 Prolog 得到 Ship Puzzle 的答案?

    我需要使用 Prolog 解决 Ship Puzzle 问题 以下是事实 有5艘船 希腊的船六点出发 载着咖啡 中间的船有一个黑色的烟囱 英国船九点出发 有蓝色烟囱的法国船位于一艘运载咖啡的船的左侧 运载可可的船的右侧是一艘开往马赛的船 这
  • 检测序列的排列

    我有一个像这样的数字列表 数组 1 2 3 4 所以我的目标是检查给定的另一个数组 如果该数组是原始示例的排列 则该数组 3 4 1 2 and 1 2 4 3 是原始的排列 但是 1 2 1 1 or 1 5 4 3 not 两种可能的解
  • 确定重叠 DATETIME 范围的最大数量

    我有一张桌子 上面有一些DATETIME范围 比如 id start end 1 2011 12 18 16 00 00 2011 12 18 17 00 00 2 2011 12 19 08 00 00 2011 12 19 10 00
  • 何时从 QAbstractItemModel 发出 dataChanged

    在 Qt 中 我有一个模型子类化QAbstractItemModel 它是显示在 QTreeView 中的树 该模型支持各种形式的更改 并且都可以正常工作 相关的两个是 1 少量相关行中的部分数据发生变化 2 可视化更改意味着大多数行应更改
  • 从线性探测转向二次探测(哈希冲突)

    我当前的哈希表实现是使用线性探测 现在我想转向二次探测 后来转向链接 也许还有双重哈希 我读过一些文章 教程 维基百科等 但我仍然不知道我到底应该做什么 基本上 线性探测的步长为 1 这很容易做到 当从哈希表中搜索 插入或删除元素时 我需要
  • tinyMCE 编辑栏未显示

    我正在运行 Plone 4 1 4 当我尝试编辑用于显示tinyMCE 编辑器的文本区域时 我得到的只是一个列出 有效元素 字典的对话框 我安装了 kupu 编辑器并且工作正常 但我更喜欢tinyMCE 有人遇到过这个问题吗 任何帮助将不胜
  • 如何反序列化包含不同类型对象的json数组

    这是一个 json 片段 其中包含一个数组 图标 其中可以包含两种不同类型的对象 应用程序和文件夹 icons application displayName Facebook bundleId com facebook com folde
  • npm 安装错误 - 无法获取本地颁发者证书

    我正在得到一个unable to get local issuer certificate执行 npm install 时出错 typings ERR message Unable to read typings for es6 shim
  • 向内存中的特定地址/位置显式分配或访问值?

    我的确切问题是 其中有任何规定c and c 将值显式分配给特定地址例如假设我想存储20 at 0x1846010内存中的地址 我还想使用同一地址访问一个值 0x1846010 可能很容易 但我真的很困惑如果可以的话如何做到这一点 任何人都
  • JSF f:ajax 不会立即渲染

    我有这样的输入文本
  • VS code,julia linter 不起作用(在 Mac 上)

    在向自己保证 Julia 已启用并且 linter 也已启用 在 VS Code 设置中 Julia Lint Run 后 我在 xxx jl 脚本上得到语法高亮显示 但根本没有 linting 我在最新的 vs code 最新的朱莉娅 1
  • C 中的正则表达式:示例?

    我正在寻找一些关于如何在 ANSI C 中使用正则表达式的简单示例和最佳实践 man regex h并没有提供那么多帮助 正则表达式实际上不是 ANSI C 的一部分 听起来您可能正在谈论 POSIX 正则表达式库 它随大多数 所有 nix
  • Visual Studio 包构建和私有 bin 路径中的 DLL

    我正在使用 MEF 来做一种粗略的插件架构 这运作良好 但是 当我使用 Visual Studio 包 发布构建任务 我通过 NAnt MSbuild 调用 进行部署时 我未引用的插件程序集未包含在包中 因此未部署 有没有办法告诉 VS M
  • 使用 NetBeans 从 java 项目制作可执行文件 [重复]

    这个问题在这里已经有答案了 我在 NetBeans 中创建了一个 java 项目 现在我想用它制作一个可执行文件 该文件可以在安装了 JDK 或 JRE 但没有安装 NetBeans 或任何其他 Java IDE 的其他计算机上执行 运行
  • android hellomap 示例给出异常

    06 14 22 13 33 992 ERROR AndroidRuntime 331 Uncaught handler thread main exiting due to uncaught exception 06 14 22 13 3
  • JavaFXPorts(Gluon 插件) 在 Android 上保存文件

    我在使用 JavaFxPorts 在 Android 上保存文件时遇到问题 我找到了那个链接here 但这对我不起作用 它没有找到接口 我无法使用它 我的目标是使用 JavaFxports 在 Android 上保存文件 Thanks 如果
  • 如何根据 Combobox 的值更改 DataGridView 单元格颜色?

    我有一个 datagridview 如下 我想 当表单加载时 如果Gender列的值为Male 列对应的颜色单元格Name将会是白色的 当 if 改变列的值时Gender 男 女 该列的颜色单元格Name将是深灰色 否则如果更改列的值Gen
  • 如何使用 Java 通过 XSL 转换 XML

    我目前正在使用标准 javax xml transform 库通过 XSL 将 XML 转换为 CSV 我的 XSL 文件很大 大约 950 行 我的 XML 文件也可能很大 它在原型阶段运行良好 只有大约 50 行左右的一小部分 XSL
  • 从 /proc//status 获取 pid 和其他进程信息

    我需要从以下位置获取一些信息 pid 只是一个例子 我知道通过许多其他方式获取它要容易得多 proc PID status 我尝试这样做 include