linux设备

来源:互联网 发布:网络电视浏览器在哪里 编辑:程序博客网 时间:2024/06/09 14:28

在Linux系统中,存在一个抽象化的设备目录,名为/dev,如图所示。该目录下存有指向系统中硬件的特殊文件。这些指向硬件设备的文件,极大地简化了程序员对硬件的操作。

Linux系统将设备分成了3种类型:

1). 字符设备: 字符设备就是能够像字节流一样访问的设备,字符终端和串口就属于字符设备。

2). 设备: 与字符设备不同,在读写操作时,块设备每次只能传输一个或多个完整的块。

3). 网络接口:网络接口存在一定的特殊性,其与内核的通信完全不同于内核与字符设备或块设备的通信。 

(如果该设备是字符设备的话,将以字符“c”开头。如果是块设备的话,将以字符“b”开头)

每个设备都带有诸如“14,0”或“8,3”这样的编号, 这种号码称为主从设备号,内核通过该号码将设备文件与真实设备关联起来。前面的数字称为主设备号,指向硬件设备,而次设备号指向子设备。

 

 

在Linux系统启动时,设备驱动将被加载。设备驱动成功加载后,将向系统反馈一个主设备号,驱动程序将根据该主设备号在/dev目录下创建对应的设备文件。这样,程序就可以使用open、read、write函数或命令,通过设备文件实现对设备的访问了

 

 

传统终端指的是计算机外部的设备,而现在终端为显示器、控制器及键盘等设备的总称。终端与平常使用的计算机的根本区别在于, 没有自己的CPU单元和内存单元。终端的主要功能是发送用户输入的请求给主机,并显示主机完成运算后的结果。随着计算机技术的发展,目前终端有了新的含义。一切接入网络的计算机设备称为终端,如电脑、PDA、智能电话、数字电视等。在Linux系统中,所有终端设备都被称为tty。tty被认为是Teletypes或Tele-typerwriters的缩写。终端一种字符型的设备,有多种类型:

1). 串行端口终端(/dev/ttySn)

2). 伪终端(/dev/pts/n)

3). 控制终端(/dev/tty)

4). 控制台终端(/dev/ttyn,/dev/console)

Linux系统提供了命令或相关函数对终端进行控制,以达到用户对输出显示或终端的特定要求。

1). stty命令显示终端设置

2). reset命令将终端恢复到正确的状态

3). ttyname函数获得当前终端名称                                                         

ttyname函数

头文件

<unistd.h>

函数形式

char *ttyname(int fd);

返回值

成功

失败

是否设置errno

返回终端设备的名称

NULL

 

4). tcgetattr函数与tcsetattr函数控制终端

tcgetattr函数和tcsetattr函数

头文件

<termios.h>

<unistd.h>

函数形式

int tcgetattr(int fd, struct termios *termios_p);

int tcsetattr(int fd, int optional_actions, const struct termios *termios_p);

返回值

成功

失败

是否设置errno

0

−1