是否存在任何神奇的“stdout”文件? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

某些实用程序无法输出到stdout。

util out.txt

有用。但有时我想将输出管道输出到其他程序,如:

util out.txt | grep test

linux中是否存在任何神奇的“stdout”文件,所以当我将替换上面的out.txt时,它会将数据重定向到stdout管道吗?

注意:我知道util out.txt && cat out.txt | grep test,所以请不要发布这样的答案。

linux bash shell pipe
1个回答
3
投票

你可以使用/dev/stdout。但是,如果一个程序需要lseek(2)(或mmap(2)),这并不总是有效。

通常/dev/stdout/proc/self/fd/1的符号链接(参见proc(5))。

IIRC某些程序的某些版本(可能是GNU awk)专门处理/dev/stdout文件名(例如,能够在没有安装/proc/的情况下工作)。

程序参数的一个常见但非通用的约定是在用作文件名时考虑-来表示stdout(或stdin)。例如,请参阅与tar(1)一起使用的-f -

如果您编写一些实用程序,我建议在可能的情况下遵循-约定并记录stdout是否需要可搜索。

一些程序正在测试stdout或stdin是否是终端(例如使用isatty(3))以表现不同,例如通过使用ncurses。如果你编写这样的程序,我建议提供一个程序选项来禁用该检测。

© www.soinside.com 2019 - 2024. All rights reserved.