在Rust中, eprintln!
和 println!
都是用来输出文本的宏, 但它们的输出目标不同。
println! : 这个宏用于向标准输出 (stdout) 打印文本。通常,这是你在终端或命令行界面中直接看到的输出。
println!("This is printed to stdout.");
eprintln! : 这个宏用于向标准错误 (stderr) 打印文本。标准错误是一个用于显示错误消息和诊断信息的独立的输出流。这意味着,即使标准输出被重定向到文件或其他地方,标准错误上的消息仍然会直接显示在屏幕上。
eprintln!("This is printed to stderr.");
在实践中, 当你希望输出错误或警告信息时,通常会使用 eprintln!
,而其他常规输出则使用 println!
。这种分离的好处是,你可以单独处理正常的程序输出和错误消息,例如,通过重定向这两种输出到不同的文件或处理工具。
在大多数操作系统中,当你运行一个程序时,它通常有三个默认的I/O流:标准输入(stdin)、标准输出(stdout)、和标准错误(stderr)。这三个流通常都关联到终端。
2 + 2
,结果 4
会打印到stdout。现在,来到重定向的部分:
当你在命令行中运行一个程序,你可以重定向其输出。这意味着,你可以将程序的stdout或stderr发送到文件或其他程序,而不是默认的终端显示。
例如,假设你有一个程序my_program
,你可以这样重定向它的stdout到一个文件:
my_program > output.txt
在这种情况下,所有使用 println!
的输出都会进入 output.txt
文件,而不是显示在终端。但是,任何使用 eprintln!
的输出仍然会在终端上显示,因为我们只重定向了stdout,没有重定向stderr。
如果你想同时重定向stdout和stderr到同一个文件,你可以这样做:
my_program > output.txt 2>&1
println!
和 eprintln!
都会默认输出到命令行,但是你可以选择重定向它们的输出到其他地方。通过区分这两种输出,你可以更灵活地控制如何处理正常的程序输出和错误消息。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
添加我为好友,拉您入交流群!
请使用微信扫一扫!