Linux I/O重定向的原理及实现
在Linux系统中,每个进程都有STDIN、STDOUT、STDERR这三种标准I/O。用过shell的同学们都知道,我们可以方便地对shell命令进行I/O重定向。
对Linux进程来讲,每个打开的文件都是通过文件描述符(File Descriptor)来标识的,内核为每个进程维护了一个File Descriptor Table(文件描述符表),这个表以FD为索引,再进一步指向文件的详细信息。在进程创建时,内核为进程默认创建了0、1、2三个特殊的FD,这就是STDIN、STDOUT和STDERR,如下图所示意: