【发布时间】:2014-01-22 16:00:56
【问题描述】:
如何使用 c 程序找到最大可能的管道数。它在操作系统级别如何工作? 我猜最大可能的管道数将由文件描述符表可以拥有的最大条目决定。这是对的吗?你的见解是什么?
【问题讨论】:
-
答案取决于操作系统。
标签: c operating-system pipe file-descriptor
如何使用 c 程序找到最大可能的管道数。它在操作系统级别如何工作? 我猜最大可能的管道数将由文件描述符表可以拥有的最大条目决定。这是对的吗?你的见解是什么?
【问题讨论】:
标签: c operating-system pipe file-descriptor
每个管道需要两个 FD。所以答案是 FD 的最大数量,减去那些正在使用的(例如 STDIN、STDOUT、STDERR),再除以 2。
要查找最大 FD 数,请使用
ulimit -n
除此之外,很可能会有更高的操作系统限制。您没有说您使用的是什么操作系统,但在 Linux 上,我相信它是一个内核编译选项(来自内存)。在任何情况下,FD的数量都不能超过INT_MAX。
我看到你想要一个 C 函数来读取这个。我建议你使用getrlimit 传递RLIMIT_NOFILE
【讨论】: