有没有办法检测输入表单文件重定向? (C++)
Is there a way to detect input form file redirection? (C++)
我正在制作一个以 3 种方式接收输入的程序:
- 键盘(通过 cin)
- 文件(通过 cmd 行给出的参数)
- 并从文件重定向输入。
我正在做一个 if-else 语句,其中第一部分测试 cmd 行是否有 arg,如果没有给出文件则测试 else。现在我只是想找出如何制作一个 if 语句来检测输入是否来自文件重定向。谢谢
我正在尝试做的事情的例子:
if(argc > 1) {
//process file
}
else if(/*test for file redirect*/){
//process input from file redirect
}
else {
//process standard input
}
在 Linux(以及大多数其他 Unix 风格的)系统上,您可以:
#include <unistd.h>
bool stdin_is_redirected = isatty (0) == 0;
这依赖于 stdin
是文件描述符 0 的事实。
文档here
我正在制作一个以 3 种方式接收输入的程序:
- 键盘(通过 cin)
- 文件(通过 cmd 行给出的参数)
- 并从文件重定向输入。
我正在做一个 if-else 语句,其中第一部分测试 cmd 行是否有 arg,如果没有给出文件则测试 else。现在我只是想找出如何制作一个 if 语句来检测输入是否来自文件重定向。谢谢
我正在尝试做的事情的例子:
if(argc > 1) {
//process file
}
else if(/*test for file redirect*/){
//process input from file redirect
}
else {
//process standard input
}
在 Linux(以及大多数其他 Unix 风格的)系统上,您可以:
#include <unistd.h>
bool stdin_is_redirected = isatty (0) == 0;
这依赖于 stdin
是文件描述符 0 的事实。
文档here