c - 查找最大管道数的函数

标签 c operating-system pipe file-descriptor

如何使用 C 程序找到最大可能的管道数。它在操作系统级别如何工作? 我猜想管道的最大可能数量将由文件描述符表可以拥有的最大条目决定。这是对的吗?你的见解是什么?

最佳答案

每个管道需要两个 FD。所以答案是 FD 的最大数量减去正在使用的 FD 数量(例如 STDIN、STDOUT、STDERR),然后除以 2。

要查找 FD 的最大数量,请使用

ulimit -n

除此之外,很可能会有更高的操作系统限制。你没有说你正在使用什么操作系统,但在Linux上我相信它是一个内核编译选项(来自内存)。在任何情况下,FD 的数量都不能超过 INT_MAX

我发现您想要一个 C 函数来读取此内容。我建议您使用 getrlimit 传递 RLIMIT_NOFILE

关于c - 查找最大管道数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21287848/

相关文章:

c - 最小最大数字数组

c - 为什么汇编需要启动任何操作系统内核

python - 检索 subprocess.call() 的输出

c - Windows XP 和 Windows 7 之间注销通知事件的差异

c - 解析 HTTP header

linux - 是否有实现纳秒级延迟的实时 Linux 发行版?

javascript - 仅当文本长度等于字母数时,如何在剪切文本时添加...?

c - 从多个管道读取数据的正确方法是什么?

c - Scanf 正在改变我的号码

operating-system - Inode 与 Vnode 的区别