jonghne 发表于 2005-6-8 09:27:21

标准输出问题请教

请问,系统信息一般从显示器打印出来,将显示器作为标准输出的内核代码文件是哪个?printf用多了,但一直不知道它的道理:)谢谢!

wolf0403 发表于 2005-6-8 18:38:28

我猜想 0 1 2 三个 fd 都是从父进程继承的,所以要看,就应该是在核心源码的 init/main.c
http://lxr.linux.no/source/init/main.c#L674
这里打开了 /dev/console 到 fd 0,然后两次 sys_dup 复制到 1 和 2,然后 exec 了 /sbin/init,这就是 /sbin/init 的 stdin, stdout 和 stderr。/sbin/init 是所有进程的父进程,因此派生进程都会继承这三个文件描述符。

当然,进程可以关闭某个 fd 或者重新打开指向其它的文件(譬如普通文件或者 socket 或者 pipe 或者 /dev/pts/* 等)。由此派生的子进程也会继承这个特性。
页: [1]
查看完整版本: 标准输出问题请教