当我从stdin在Linux上运行C脚本时,我需要接受路径名。
我尝试做:-
int file = open(STDIN_FILENO, O_RDONLY)
“文件”始终分配为-1(未打开文件)。
我希望运行
./myScript < test.txt
通过“ test.txt”打开
open("test.txt", O_RDONLY); // expected after running the previous command
答案 0 :(得分:0)
我希望跑步
./ myScript
通过“ test.txt”打开
那是不正确的期望。当您使用外壳程序的重定向运算符<
时,它将打开文件text.txt
并将文件描述符分配给程序的标准输入,即文件描述符0(STDIN_FILENO)。因此,无需再次打开文件-已经完成。
如果您希望程序将文件名作为参数接收,则不要使用<
并将其作为参数传递:
./myScript test.txt
现在,您将能够在程序的argv[1]
中接收文件名,并将其用于对open
系统调用的调用中。
注意:C不是脚本,而是编译后的语言,因此最好使术语正确(例如,用“ C程序”代替“ C脚本”)。