使用重定向时获得意外的argc

这是代码。

#include<stdio.h>

int main(int argc,char* argv[])
{
    fprintf(stderr,"arg count:%dn",argc);
    return 0;
}

当输入以下cmd时:

./a.out x 3 >1.txt  //case1

我得到了 argc 3。(在这种情况下,a.out x 和 3)

但是当输入以下cmd时:

./a.out x 3>1.txt //case2

我得到了 argc 2。似乎 3>1 被忽略了。

我预计 argc 是 3 像 case1。

(说明:case1 中 3 和 > 之间有一个空格)

为什么我有第二个案例?以及如何解决?

回答

首先,您必须记住所有重定向都是由 shell 本身处理的,它不会传递给程序。

命令

./a.out x 3 >1.txt

有三个参数a.out:命令本身,x3

./a.out x 3>1.txt

然后3>1是外壳处理的重定向的所有部分。它将描述符重定向3到文件1.txt


以上是使用重定向时获得意外的argc的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>