linux - 为什么Linux会重用由pipe()分配的文件描述符

标签 linux pipe

我在 Linux 中使用套接字和管道时遇到问题。具体来说,我们调用 pipeline(),它分配接下来的两个可用文件描述符...比方说 10 和 11。然后我们在套接字上调用 Accept(),期望它分配 12。相反,它分配了 11。

我们已经进行了一些测试,看来从 pipeline() 返回的第二个 FD 始终可供创建文件描述符的其他系统调用重用。

谁能解释一下吗?

最佳答案

这意味着有人在调用管道之后和第二次系统调用之前的某个时间关闭了有问题的文件描述符。例如,如果您派生出其他进程来在管道的一端执行操作,则可能会搞砸关闭​​另一进程使用的管道末端的代码,并关闭错误的管道末端。或者任何其他可能在某些文件描述符上调用 close 的东西都可能会关闭错误的东西。

关于linux - 为什么Linux会重用由pipe()分配的文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2353113/

相关文章:

c - 使用子进程读取输入?

linux - SMAPS 未命名的内存段

linux - 在 Fedora 上安装 Sencha Touch

c - Linux 中的 Select 循环——如何让它变得更好?

R中的读写管道()通信

linux - 为什么我的 Linux 管道卡住了?

linux - 只需键入其名称即可执行的 Shell 脚本

c++ - 两个线程中的同时 abort()

c - 如何使用 C 在 linux 终端中显示 "help"命令?

unix - 为什么 "yes | head"不挂?