0
假设我有一个名为fstatcheck的程序。它从命令行获取一个参数并将其视为文件描述符。它检查文件描述符指向的文件的统计信息。当我们使用“<”重定向时,shell会做什么?
例如:
$./fstatcheck 1
l = 1
type: other, read: yes
又如:
$./fstatcheck 3 < foobar.txt
l = 3
Fstat error: Bad file descriptor
问题:
是什么shell在第二个例子中做什么? 我可以猜测,它需要3作为文件描述符,并开始分析统计,但描述符3未打开。但是shell如何处理重定向呢?
我承担壳执行下面的算法:
if (fork() == 0) { // What does the shell do here? execve("fstatcheck", argv, envp); }
有什么办法,我可以创造一个文件描述符3,让它连接到哪个点通过向foobar.txt文件统计的打开文件表只使用shell命令(而不是使用C代码)?
Stack Overflow是编程和开发问题的网站。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。另请参阅[我在哪里发布有关Dev Ops的问题?](http://meta.stackexchange.com/q/134306) – jww