有没有stdin输入长度的限制(输入量或输入速度方面)?
否. stdin
没有长度或速度限制。
如果你想通过 stdin
获取几个 GB 的数据,你可以这样做,你的电脑会尽可能快地提供它。
for (;;) {
int c = getc(stdin);
if (c == EOF) { break; }
putc(c, stdout);
}
试一下:
yes
Unix 命令会无限输出 y
。将其管道传输到一个只读取 stdin 并将其放在 stdout 上的 C 程序中(例如 cat
,但 tr 'y' 'y'
也可以)。等待直到 cat
崩溃或您的耐心达到极限:
yes | cat
rm -i
)。 - mouvicielstdin
没有任何长度限制。如果您无法接收大量数据,则是您的代码造成了问题。
它可能取决于stdin驱动程序!
stdin(作为一个概念)没有限制。
我预计内核开发人员(任何系统的)都会做出一些设计选择,添加限制。
传输速度存在限制。一般来说,它们与任何“UNIX”管道的速度大致相同。大多数操作系统提供了更有效的机制,但是管道非常快...假设您没有使用printf等函数。