You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能通过读取/proc/<pid>/fd打开文件描述符吗?

可以通过读取/proc/<pid>/fd目录并链接到对应的文件来打开文件描述符。以下是一个示例代码,显示如何使用C语言遍历文件描述符并打印关联的文件名:

#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(void) {
  char dir_path[50];
  char fd_dir_path[100];
  char *buf;
  ssize_t len;
  DIR *dir;
  struct dirent *ent;

  pid_t pid = getpid();
  snprintf(dir_path, sizeof(dir_path), "/proc/%d/fd", pid);
  dir = opendir(dir_path);
  if (dir == NULL) {
    perror("opendir failed");
    return EXIT_FAILURE;
  }

  buf = (char *) malloc(sizeof(char) * 1024);
  while ((ent = readdir(dir)) != NULL) {
    if (ent->d_name[0] == '.') continue;
    memset(fd_dir_path, 0, sizeof(fd_dir_path));
    snprintf(fd_dir_path, sizeof(fd_dir_path), "%s/%s", dir_path, ent->d_name);
    len = readlink(fd_dir_path, buf, 1024);
    if (len > 0) {
      buf[len] = '\0';
      printf("%s -> %s\n", ent->d_name, buf);
    }
  }
  free(buf);
  closedir(dir);

  return EXIT_SUCCESS;
}
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

iOS 优化 - 启动优化 |社区征文

就知道了这个可执行文件依赖的动态库。例如加载动态库 A 到内存,接着检查 A 所依赖的动态库,就这样的递归加载,直到所有的动态库加载完毕。通常一个 App 所依赖的动态库在 100-400 个左右,其中大多数都是系统的动态库,它们会被缓存到 `dyld shared cache`,这样读取的效率会很高。1. `dylib loading` * 设置运行环境。 这一步主要是设置运行参数、环境变量等。也就是我们常通过 Xcode 设置的`Environment Variables`...

Kubernetes 观测:基于 eBPF 的云原生深度可观测性实践

它指向当前进程的文件描述符表 files\_struct;* files\_struct 中维护了当前进程打开文件文件描述符表,其中包括 socket 在内的所有文件描述符。可以通过遍历这个表,根据 socket 的 fd ,获取对应文件的 file 结构... PID、netns 等原始信息 ,在与 K8s 的资源关联起来前,它们还需要经过元数据关联加工。首先是节点上可以拿到的元数据关联。基于 /proc 和 CRI 来构建 PID、 Netns、Container 元数据的本地缓存,然后根据 eBPF ...

2022年终总结-两年Androider的技术成长之路|社区征文

(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7ef3470eb9f34efd8d394a2eb2e810e4~tplv-k3u1fbpfcp-watermark.image?)### 起步阶段十四万字的整理看起来字数不怎么多,但是花费了我巨多的时间:比如**沈奕... 是打开了一个新的世界,在记录和总结中我的思维和认知也有了潜移默化的变化...这里主要大致整理下不同的方向,jym如果想要提升自己的话可以从这几个方面去找资料:>- 知识管理法>- 高效时间管理,GTD时间管理法,生...

适用于线上内存监控框架KOOM源码分析 | 社区征文

通过gc正常情况下是可以被回收的;这里我们需要关注的是一个ReferenceQueue引用队列,当一个对象被回收之后,就会被放在这个队列中,从而与弱引用对象产生关联。```java2022-12-16 21:15:57.598 24678-24678/com.la... 生成hprof文件。![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ffd124f968024f188046452ff5d2c760~tplv-k3u1fbpfcp-watermark.image?)![image.png](https://p9-juejin.byteimg.com/tos-cn-...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

能通过读取/proc/<pid>/fd打开文件描述符吗? -优选内容

iOS 优化 - 启动优化 |社区征文
就知道了这个可执行文件依赖的动态库。例如加载动态库 A 到内存,接着检查 A 所依赖的动态库,就这样的递归加载,直到所有的动态库加载完毕。通常一个 App 所依赖的动态库在 100-400 个左右,其中大多数都是系统的动态库,它们会被缓存到 `dyld shared cache`,这样读取的效率会很高。1. `dylib loading` * 设置运行环境。 这一步主要是设置运行参数、环境变量等。也就是我们常通过 Xcode 设置的`Environment Variables`...
Kubernetes 观测:基于 eBPF 的云原生深度可观测性实践
它指向当前进程的文件描述符表 files\_struct;* files\_struct 中维护了当前进程打开文件文件描述符表,其中包括 socket 在内的所有文件描述符。可以通过遍历这个表,根据 socket 的 fd ,获取对应文件的 file 结构... PID、netns 等原始信息 ,在与 K8s 的资源关联起来前,它们还需要经过元数据关联加工。首先是节点上可以拿到的元数据关联。基于 /proc 和 CRI 来构建 PID、 Netns、Container 元数据的本地缓存,然后根据 eBPF ...
2022年终总结-两年Androider的技术成长之路|社区征文
(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7ef3470eb9f34efd8d394a2eb2e810e4~tplv-k3u1fbpfcp-watermark.image?)### 起步阶段十四万字的整理看起来字数不怎么多,但是花费了我巨多的时间:比如**沈奕... 是打开了一个新的世界,在记录和总结中我的思维和认知也有了潜移默化的变化...这里主要大致整理下不同的方向,jym如果想要提升自己的话可以从这几个方面去找资料:>- 知识管理法>- 高效时间管理,GTD时间管理法,生...
适用于线上内存监控框架KOOM源码分析 | 社区征文
通过gc正常情况下是可以被回收的;这里我们需要关注的是一个ReferenceQueue引用队列,当一个对象被回收之后,就会被放在这个队列中,从而与弱引用对象产生关联。```java2022-12-16 21:15:57.598 24678-24678/com.la... 生成hprof文件。![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ffd124f968024f188046452ff5d2c760~tplv-k3u1fbpfcp-watermark.image?)![image.png](https://p9-juejin.byteimg.com/tos-cn-...

能通过读取/proc/<pid>/fd打开文件描述符吗? -相关内容

云原生虚拟化:一文读懂网络虚拟化之 tun/tap 网络设备

东西向的流量连通性职能,而 tun/tap 设备正是 qemu 连通 vm 内外网络的重要虚拟设备。>> 本文将详细介绍 tun/tap 设备的原理及应用,希望能通过本文的介绍读者能对 tun/tap 网络设备有一个更加全面的了解。了解... 通过虚拟网卡驱动到达协议栈,对于协议栈来说,这个数据就像从真实网卡接收的一样。1. **数据接收:** 当网络协议栈发送数据到虚拟接口 tunx 或者 tapx 时,应用进程 A 通过上述创建的设备文件描述符 fd,从中读取接口...

Linux RT 进程引发内核频繁卡死的优化方案

因此只能通过有限的手段进行分析,我们决定从虚机内部和虚机外部(即虚机所在 Host 主机上)同时入手分析。首先在虚机内部我们让客户协助配置 sar 的打点粒度,实现监控数据的秒级打点,其次在虚机卡死时我们从主机上查... CPU: 0 PID: 14524 Comm: surfaceflinger Tainted: P OE 5.4.53 #1[Mon Oct 24 22:43:47 2022] Hardware name: Volcengine Veen, BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014...

Cilium 原理解析:网络数据包在内核中的流转过程

fdd8c911476484abbc&scene=21#wechat_redirect)》,介绍作为第一个通过 eBPF 实现了 kube-proxy 所有功能的网络插件,Cilium 诞生的背景、发展演进的过程以及具体的使用示例。本文将重点关注 Cilium 网络的相关知识点... 它的核心概念就是不采用中断的方式读取数据,而是首先采用中断唤醒数据接收的服务程序,然后 poll 的方法来轮询数据。- 驱动注册的这个 poll 是一个主动式 poll(active poll),执行 poll 方法的是运行在某个或者所...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

基于 FFmpeg 实现一个数据流风格的视频处理工具 | 社区征文

并生成回放文件的 CDN 播放链接,通过云函数,发送通知到本地服务接口,将对应直播场次的会放链接更新为云直播地址,以此来完成直播结束后,近乎无缝的回放切换衔接。由于在我方平台举行的教育类直播时效性比较明显,也就... AnsiConsole.MarkupLine("[#FDE047]{0}[/]", match.Value.EscapeMarkup()); } } }); proc.Start(); ...

Android发热监控实践|得物技术

CPU 使用率的采集通过读取解析 Proc stat 文件的方式进行计算。在系统 proc/[pid]/stat 和 /proc/[pid]/task/[tid]/stat 分别记录了对应进程 ID、进程 ID 下的线程 ID 的 CPU 信息。具体的字段描述在此不进... (https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/85bda95818514fd684ff19b887d77c5e~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1714926041&x-signature=FN4t8XD%2Fjz%2BtOVAEebqL...

如何监控对ECS Linux 实例上的文件系统做的更改

# 问题描述如何监控对 ECS Linux 实例上的文件系统做的更改?# 问题分析linux audit子系统是一个用于收集记录系统、内核、用户进程发生的行为事件的一种安全审计系统,可以使用audit进行监控# 解决方案1.查看是... Process: 683 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS) Process: 676 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS) Main PID: 679 (auditd) Tasks: 2 (limit...

如何监控对ECS Linux 实例上的文件系统做的更改

# 问题描述如何监控对 ECS Linux 实例上的文件系统做的更改?# 问题分析linux audit子系统是一个用于收集记录系统、内核、用户进程发生的行为事件的一种安全审计系统,可以使用audit进行监控# 解决方案1.查看是... Process: 683 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS) Process: 676 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS) Main PID: 679 (auditd) Tasks: 2 (limit...

源码剖析之epoll

epfd, int, op, int, fd, struct epoll_event __user *, event){ int error; int full_check = 0; struct fd f, tf; struct eventpoll *ep; struct epitem *epi; struct epoll_event epds; struct even... /* 用ep_ptable_queue_proc作为poll的回调函数 */ /* 回调函数的作用是将该epitem加入的文件的等待队列中去 */ init_poll_funcptr(&epq.pt, ep_ptable_queue_proc); /* * Attach the item to the poll hooks...

veLinux特性说明

文件系统等模块进行了缺陷修复、性能增强并引入了适用于云应用的新特性,例如: 优化冗余的HugeTLB页,降低内存开销。 增加ebpf通用helper函数,支持通过模块添加ebpf功能。 优化了cgroup slab memory controller。 ... 提供内核panic的准实时监控报警功能。 systemd 修复了journald重启时日志丢失的问题。 pciutils 提供了正确读取和显示PCI Gen 4 16GT/s速率的支持。 zlib zlib是开源社区的一个无损压缩的基础库,火山引擎在社区版本...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询