c - 为什么不将重定向输入视为命令行参数?
问题描述
我正在尝试读取已从文件重定向的命令行参数。我使用的命令是 ./a.out < test.txt 而 test.txt 的内容是:Hello world。但是下面我的程序的输出没有打印 Hello world。相反,它只显示./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
已经重新路由。所以程序永远不会看到重定向。
推荐阅读
- node.js - 如何让应用通过 Graph API 向 Microsoft Teams 发送消息?
- file - 读写文件时如何修复“FileSystemException:无法打开文件”?
- html - 如何自动播放有声音乐
- authorize.net - Authorize.Net 托管表单:重定向后如何验证付款成功
- python-3.x - 如何转换 numpy 子数组的 dtype?
- dropbox - 如何响应 Dark 中的 Dropbox webhook 挑战?
- postgresql - pq:重复键值违反唯一约束“pg_type_typname_nsp_index”
- html - 仅在背景的一部分上设置背景颜色
- delphi - 如何在服务器活动时绑定新的服务器绑定
- excel - 按数字顺序在页面上写下重复的数字。(图片可能更有意义。)