今天在看qmail 源代码的时候,有关进程和文件描述符的地方,有点不懂,在网上小查了一下,浅显的样子应该是这样.
文件描述符,录属于进程.对于不同的进程,文件描述符是相互独立的,所以在不同的进程中,可以用相同的文件描述符来指向不同的文件或者管道之类的.
下面是在unix 环境高级编程的话:
对于内核而言 ,所有打开文件都由文件描述符引用.文件描述符是一个非负整数.当打开一个现存文件或创建一个新文件时,内核向 进程 返回一个文件描述符.当读,写一个文件时,用open或create返回的文件描述符标识该文件,将其作为参数传送给read或write.
按照惯例,UNIX shell 使文件描述符0与标准输入相结合,文件描述符1与标准输出相结合,文件描述符2与打闪出错相结合.
这是UNIX shell以及很多应用程序的惯例,而与内核无关.