C++检测输入重定向

Tie*_*eme 2 c++ iostream io-redirection

可能重复:
检测stdin是C/C++/Qt中的终端还是管道?

考虑我们有一个小程序,需要一些标准的C输入.

我想知道用户是否正在使用输入重定向,例如:

./programm < in.txt
Run Code Online (Sandbox Code Playgroud)

有没有办法程序中检测这种输入重定向方式?

Mik*_*our 8

没有可移植的方法可以做到这一点,因为C++没有说明cin来自哪里.在Posix系统上,您可以测试是否cin来自终端或使用重定向isatty,如下所示:

#include <unistd.h>

if (isatty(STDIN_FILENO)) {
    // not redirected
} else {
    // redirected
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

2893 次

最近记录:

14 年,2 月 前