为什么从 /dev/zero 读取一行输入会使我的计算机无响应?
Why does reading a line of input from /dev/zero make my computer unresponsive?
构建此代码时:
use std::io;
fn main() {
let mut guess = String::new();
let res = io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
}
然后执行:
cargo run < /dev/zero
我的电脑(低于 Ubuntu 20)没有响应。
我已阅读 the manual page of the readline
function 并且此行为似乎不正常。
我错过了什么?
/dev/zero
是 never-ending 字节的 NUL
流。 read_line
在读取换行符时停止。所以,这个函数永远不会 return 并且会尝试无限扩展缓冲区。您的计算机变得无响应的原因可能是因为它启动 swapping 频繁,以容纳 ever-growing 缓冲区。
read_line()
绝对不是你想要的。尝试读取固定数量的字节?
构建此代码时:
use std::io;
fn main() {
let mut guess = String::new();
let res = io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
}
然后执行:
cargo run < /dev/zero
我的电脑(低于 Ubuntu 20)没有响应。
我已阅读 the manual page of the readline
function 并且此行为似乎不正常。
我错过了什么?
/dev/zero
是 never-ending 字节的 NUL
流。 read_line
在读取换行符时停止。所以,这个函数永远不会 return 并且会尝试无限扩展缓冲区。您的计算机变得无响应的原因可能是因为它启动 swapping 频繁,以容纳 ever-growing 缓冲区。
read_line()
绝对不是你想要的。尝试读取固定数量的字节?