首先,Unix进程使用文件描述符0,1,2作为标准输入、输出和错误的通道。
其次,当进程请求一个新的文件描述符的时候,系统内核将最低可用的文件描述符赋给它。
第三,文件描述符集合通过exec调用传递,且不会被改变。
如何将stdin定向到文件
方法1 :close then open
方法2 :open..close..dup..close
方法3 :open..dup2..close
newfd = dup(oldfd);
newfd = dup2(oldfd, newfd);
系统调用dup复制了文件描述符oldfp。
而dup2将oldfd文件描述符复制给newfd。两个文件描述符都指向同一个打开的文件