c - 为什么不将重定向输入视为命令行参数?

标签 c

我正在尝试读取已从文件重定向的命令行参数。我使用的命令是 ./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

stdinstdout 在程序开始之前已经重新路由。所以程序永远不会看到重定向。

关于c - 为什么不将重定向输入视为命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54604200/

相关文章:

c - C 中的 Scanf 错误

将dll文件转换为源代码

c - 快速连续文件写入的危险是什么?

c++ - 在具有可变参数的方法中转换警告

objective-c - 试图破解 AWS IOS SDK 以使其适用于 OSX。我收到这个错误

c - 未初始化的值和 clang 优化

c - 在不使用 'much' 的情况下显式声明变量以提高可读性的良好做法?

c++ - 在 C/C++ 程序中使用 Grep 进行模式匹配是否可取?

c - 我如何用 avrdude 删除 EEPROM 以外的所有内容?

C 代码-If 条件 HW