由open
返回的文件描述符一定是该进程尚未使用的最小描述符。由于程序启动时自动打开文件描述符0、1、2,因此第一次调用open
打开文件通常会返回描述符3,再调用open
就会返回4。可以利用这一点在标准输入、标准输出或标准错误输出上打开一个新文件,实现重定向的功能。例如,首先调用close
关闭文件描述符1,然后调用open
打开一个常规文件,则一定会返回文件描述符1,这时候标准输出就不再是终端,而是一个常规文件了,再调用printf
就不会打印到屏幕上,而是写到这个文件中了。后面要讲的dup2
函数提供了另外一种办法在指定的文件描述符上打开文件;