给出5个参数,但终端中只有3个

Tim*_*497 -1 c ide shell terminal ubuntu

我想将文件传递到交流程序。

如果我在IDE中执行此参数

./test string string < test.txt
Run Code Online (Sandbox Code Playgroud)

回来了argc = 5,但是在航站楼上我才刚开始argc = 3

似乎是因为有“ <”符号,我想使用它来表示我正在传递文件。

<是什么意思?我在Tilix终端上使用Ubuntu

tri*_*eee 5

重定向由外壳执行,并且对程序不(直接)可见。

./test string string < test.txt
Run Code Online (Sandbox Code Playgroud)

手段,

  1. 打开test.txt以读取文件描述符1
  2. 运行./test的论据stringstring

在第2点运行的程序将继承父对象的文件描述符,因此其标准输入将连接到打开的文件句柄(而不是Shell的当前标准输入,它可能是您的终端,也可能是其他文件句柄)。

顺便说一句,您可能希望避免调用程序test,尽管只要您不忘记使用显式路径来调用它,这是无害的。