2012-06-30 34 views

回答

2

shell进程没有主文件描述符,只有slave。

shell的父进程(sshd或xterm或screen或其他)通过调用getpt(3)posix_openpt(3)创建一个新的主进程。该函数返回主文件描述符。父进程然后通过调用grantpt(3),unlockpt(3),ptsname(3)open(2)的组合来获得从文件描述符。这是针对Linux和其他POSIXized系统的,其他* nixes可能会使用其他功能,但最终的结果是一样的。父进程具有主/从对文件描述符。

然后将从属描述符和从属描述符作为其标准输入,输出和错误传递到外壳。

+0

不错,谢谢你。 – bazz

0

从Solaris 5.8 PTS(7D)手册页 - STREAMS伪终端从驱动

Only one open is allowed on a master device. 

我想这回答我的问题:)
编辑:其实没有,如果有,因为获取文件描述符的方法,我不需要再打开,它是一个文件描述符lol,不需要打开

0

在基于UNIX的系统上,您可以打开/dev/tty打开当前进程的控制终端。在许多情况下,你的程序已经把它作为stdin,stdout和stderr打开了,但即使你的程序被stdin,stdout或者stderr重定向,也会给你提供进程的控制终端。