Rust 执行官;尾部-f xxx“;锈迹斑斑

Rust 执行官;尾部-f xxx“;锈迹斑斑,rust,command,tail,Rust,Command,Tail,我想用rust执行tail-fa,但运行以下代码时没有输出: fn main(){ //“a”是一个文本文件,其中写入了一些字符 let child=Command::new(“tail”).args(&[“-f”,“a]”) .stdin(Stdio::piped()) .stdout(Stdio::piped()) .spawn().expect(“失败的尾部命令”); 让mut s=String::new(); child.stdout.expect(“stdout错误”) .read_t

我想用rust执行
tail-fa
,但运行以下代码时没有输出:

fn main(){
//“a”是一个文本文件,其中写入了一些字符
let child=Command::new(“tail”).args(&[“-f”,“a]”)
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.spawn().expect(“失败的尾部命令”);
让mut s=String::new();
child.stdout.expect(“stdout错误”)
.read_to_string(&mut s).expect(“全部读取错误”);
println!(“{}”,s);
}

当我在文件
a
中添加新行时,我只得到
tail:a:文件被截断

read\u to\u string
读取,直到EOF,它将永远不会被命中,因为
tail
连续输出且永远不会结束。将程序更改为一次读取和打印一行。

读取到字符串
读取到EOF,EOF将永远不会被命中,因为
tail
连续输出且永远不会结束。将您的程序更改为一次读取并打印一行。

除了John在回答中所写的内容外,请注意,
tail
的输出表明您可能使用了
echo…>a
而不是
回声…>>a
,因此您没有在文件中追加一行,而是用该行替换了所有现有内容。除了John在回答中所写的内容外,请注意,
tail
的输出表明您可能使用了
echo…>a
而不是
回声…>>a
,因此您不用在文件中追加一行,而是用该行替换了所有现有内容。