linux - Linux 的最大管道命令

标签 linux shell pipe

最近写了一个简单的shell。我在实现管道时出现了这个问题。

我知道 Ubuntu 中命令行参数的最大长度是 2097152。(作者 this)

#define MAX_CMD_LEN 2097152

但我想知道是否有管道命令的最大数量? 例如:(n的个数)

ps -aux | grep "a.out" | awk '{print $5}' | top | ... | cat
1       |  2            | 3                | 4   | ... | n

最佳答案

不,没有这样的限制。对于单个进程表条目,ARG_MAX 适用(结合环境和 argv 长度)。但是,管道跨越单独的进程表条目,并且每个部分仅连接到它之前的进程(通过 stdin)和它之后的进程(通过 stdout)。没有一个地方需要将整个管道作为一个单元存储或跟踪在操作系统本身内部(与构造 shell 相反)。

关于linux - Linux 的最大管道命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26322365/

相关文章:

pipe - 在 Julia 中捕获进程的输出

arrays - 在 shell 脚本中使用用户输入填充动态数组

linux - 将 bash 脚本嵌入到 makefile 中

linux - 使用正则表达式模式时 AWK 不同版本的行为

linux - 重新编译 R 以支持 PNG

linux - 在 linux shell 中连接别名

linux - 如何知道远程ssh运行的进程的PID

Python:如何使用来自单独进程的变量更新 GUI,同时保持 GUI 交互性

c - Unix - 从子阻塞排序

linux - 如何在 linux 机器上并行执行多个 perl 脚本?