进程内部一瞥

进程内部一瞥 - 图1

进程含有它正在运行的程序,还有栈和堆数据空间。除此之外,进程还需要记录数据流的连向,比如标准输出连到了哪里。进程用文件描述符表示数据流,所谓的描述符其实就是一个数字。进程会把文件描述符和对应的数据流保存在描述符表中。

进程内部一瞥 - 图2

描述符表的一列是文件描述符号,另一列是它们对应的数据流。虽然名字叫文件描述符,但它们不一定连接硬盘上的某个文件,也有可能连接键盘、屏幕、文件指针或网络。

描述符表的前三项万年不变:0号标准输入,1号标准输出,2号标准错误。其他项要么为空,要么连接进程打开的数据流。比如程序在打开文件进行读写时,就会占用其中一项。

创建进程以后,标准输入连到键盘,标准输出和标准错误连到屏幕。它们会保持这样的连接,直到有人把它们重定向到了其他地方。

进程内部一瞥 - 图3