首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从fds_bits中提取文件描述符

从fds_bits中提取文件描述符
EN

Stack Overflow用户
提问于 2017-01-23 14:12:38
回答 1查看 198关注 0票数 1

据我所知,我正在调试时间相关的bug (据我所知,mthe在执行几个月后出现)。我怀疑问题是使用一组文件描述符调用pselect(),其中只包含“坏/坏”的文件描述符。

我想做什么

为了重现错误,我想运行这个程序并删除它使用的文件描述符(除了0、1和2)。为了实现这一点,我希望在程序运行时,转到/proc/<pid>/fd并取消文件解链接程序。

问题所在

当我用gdb调试程序时,提供给pselect()的一组文件描述符如下:

代码语言:javascript
复制
{fds_bits = {16384, 8, 0 <repeats 30 times>}}

有任何方法从fds_bits获取文件描述符吗?还有其他方法来实现我想做的事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 14:38:11

宏、FD_ISSET(nr, set)等基本上是将数组fds_bits解释为一个大的位字段。位n表示文件复制者n。

因此,在第一个数组成员16384 (二进制100000000000000)位nr 14中,设置了nr 14,它表示文件捕获器14。

在第二个数组成员8 (二进制1000)被设置,这是第4位。数组成员是unsigned long int类型的,因此在64位计算机上,最不重要的fdbits1位表示filedescriptor 64,因此set位代表filedescriptor 68。在32位机器上,这将是fd 36 (32 + 4).

因此,您正在检查的fd集一起代表了两个文件编制者14和68。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41808346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档