对于终端的理解

看APUE时对里面的多种终端概念不是很理解,百度了下

自己写的程序:

#include                                                              
#include

int
main (void)
{
    printf ("%s\n", ttyname (0)); //输出控制终端
                                                          

1、用Ctrl+Alt +F1~F6切换至字符终端运行此程序,输出为:

/dev/tty1~6 (控制终端为相应的虚拟终端)

2、在图形界面下打开终端运行此程序,输出为:

/dev/pts/数字  (控制终端为相应的伪终端)

每当在图形界面下打开一个新的终端,/dev/pts中都会增加一个数字,此即新打开伪终端对应的设备文件。


终端:输入和输出设备(键盘 + 显示器)。

串行终端:与机器的串口对应,每一个串口对应一个串行终端,串口对应的是物理终端。

虚拟终端:一台PC只有一套键盘和显示器,也就只有一套终端设备,但是可以通过Ctrl + Alt + F1 ~ Ctrl + Alt + F6切换到字符终端,相当于有6套虚拟的终端设备,它们共用同一套物理终端设备/dev/tty1 ~ /dev/tty6。

伪终端:虚拟终端和串行终端的数目是有限的,然而,网络终端和图形终端窗口的数目确实不受限制的,这是通过伪终端实现的。

控制终端:这是一个逻辑概念,即用户正在控制的终端,可以为串行终端,虚拟终端和伪终端。(面对进程,不面对设备!)

控制台终端:控制台终端可认为是一个PC对应的一套键盘和显示器,所有虚拟终端是对应的都是同一控制台终端。


原文:

http://blog.csdn.net/wangsifu2009/article/details/6766298

http://bbs.chinaunix.net/thread-2084721-1-1.html



在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal),控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。 默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输出都指向控制终端,进程从标准输入读也就是读用户的键盘输入,进程往标准输出或标准 错误输出写也就是输出到显示器上。在控制终端输入一些特殊的控制键可以给前台进程发信号,例如Ctrl-C表示SIGINT,Ctrl-\表示SIGQUIT。
每个进程都可以通过一个特殊的设备文件/dev/tty访问它的控制终端。事实上每个终端设备都对应一个不同的设备文件,/dev /tty提供了一个通用的接口,一个进程要访问它的控制终端既可以通过/dev/tty也可以通过该终端设备所对应的设备文件来访问。ttyname函数 可以由文件描述符查出对应的文件名,该文件描述符必须指向一个终端设备而不能是任意文件。


原文:
http://www.eefocus.com/article/09-11/87011s.html?clear=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值