我正在尝试读取已从文件重定向的命令行参数。我使用的命令是 ./a.out < test.txt 而test.txt的内容是:Hello world。 但是我下面程序的输出没有打印 Hello 世界。相反,它只显示 ./a.out。这是为什么?
int main(int argc, char* argv[], char* envp[]) {
for (int i = 1; i < argc; i++) {
printf("%s\n", argv[i]);
}
}
最佳答案
shell 在为程序准备命令行之前拦截重定向命令:
myProg <infile -t >outfile
将传递给程序
myProg -t
stdin
和 stdout
在程序开始之前已经重新路由。所以程序永远不会看到重定向。
关于c - 为什么不将重定向输入视为命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54604200/