最近写了一个简单的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/