1、设备就像文件
对unix来说,声卡、终端、鼠标和磁盘文件是同一种对象。在unix系统中,每个设备都被当做一个文件。每个设备都有一个文件名、一个i-节点号、一个文件所有者、一个权限位的集合和最近修改时间。文件有关的所有内容都将运用于终端和其他的设备。
2、设备具有文件名
每个加载到unix机器的设备(终端、打印机、鼠标、磁盘)都通过文件名表示。表示设备的文件名存放在目录/dev
ls /dev
lp * 文件是打印机
fd * 文件是软驱
sd * 文件旬scsi设备的分区
/dev/tape磁带备份驱动程序
tty * 文件是终端
dsp文件是到声卡的一个连接
dsp声卡 进程通过向该设备文件写入字节来运行一个声音文件
/dev/mouse 进程通过打开文件来读取鼠标的单击和位置的变化
3、设备和系统调用
设备不仅具有文件名,而且支持所有文件相关的操作 open read write lseek close stat
命令tty 告知用户所在终端的文件名
tty
who > /dev/pts/2
ls -li /dev/pts/2
4、设备文件属性
ls -li /dev/pts/2
5 crw--w----. 1 mis tty 136, 2 Oct 24 10:46 /dev/pts/2
拥有i-节点5 ,权限位为crw--w----,1个链接,文件所有者bruce和组tty,最近修改时间
设备文件和文件大小
常用的磁盘文件由字节组成,磁盘文件中的字节数就是文件的大小。设备文件是链接,而不是容器。
设备文件的i-节点存储的是指向内核子程序的指针,而不是文件的大小和存储的列表。
内核中传输设备数据的子程序被称为设备驱动程序。
136, 2
从终端进行数据传输的代码是在设备-进程表中编号为136的子程序。
该程序接收一个整形参数。在/dev/pts/2中,参数是2
136和2这二个数被称为设备的主设备号和从设备号。
子设备号确定处理该设备实际的子程序,而从设备号被作为参数传输到该子程序。
5、磁盘连接的属性
a)属性1 缓冲
通过修改控制变量改变文件描述符的动作
fcntl(int fd,int cmd)
b)自动添加模式
当文件描述符的O_APPEND位被开启后,每个对write的调用自动调用lseek将内容添加到文件的末尾。
#include <fcntl.h>
ins;
s = fcntl(fd,F_GETFL);
s |= O_APPEND;
result = fcntl(fd,F_SETFL,s);
if(result == -1)
perror("setting APPEND);
else
write(fd,&rec,1)
|
c)用open控制文件描述符
O_SYNC O_APPEND是文件描述符的二个属性,其他的属性将在后面的章节讨论。
fcntl并不是仅有的用来设置文件描述符属性的方法,可以通过系统调用open的第二个参数的一部分设置文件描述符属性
fd = open(WTMP_FILE,O_WRONLY | O_APPEND | O_SYNC);
内核在磁盘和进程间传输数据。内核中进行这些传输的代码有很多选项。程序可以使用open fcntl系统调用控制这些数据传输的内部动作。
6、终端驱动程序
处理进程和外部设备间数据流的内核子程序的集合被称为终端驱动程序或tty驱动程序。
驱动程序程序包含很多控制设备操作的设置,进程可以读、修改和重置这些驱动控制。
stty -all
读取和修改终端驱动程序设置
tcgetattr tcsetattr提供对终端驱动程序的访问
相关推荐
### UNIX命令集合详解 #### 一、目录及文件操作 **1.1 ls** - **功能**: 显示目录中的文件列表。 - **语法**: `ls [选项] [目录]` - **常用选项**: - `-a`: 显示所有文件,包括隐藏文件。 - `-l`: 以长格式显示...
### UNIX基本命令详解 #### 第一章:目录及文件操作 **1.1 `ls`** - **功能**:列出指定目录中的文件和子目录名。 - **语法**:`ls [选项] [文件或目录]` - **常用选项**: - `-l`:以长格式列出文件详情(包括...
### A-UNIX常用操作命令说明 #### 1. ls - 显示文件名 - **基本用法**: `ls` 命令用于列出指定目录中的文件列表,默认为当前目录。 - **选项说明**: - `-l`: 以长格式显示文件详细信息,包括权限、所有者、大小、...
### 红旗 Linux 基本命令练习详解 #### 一、系统信息与环境配置命令 1. **uname -a** - **用途**:显示内核版本、操作系统名称等系统信息。 - **示例**:`uname -a` 2. **ls -al** - **用途**:列出当前目录下...
unix系统编程概述,编写who命令,编写ls,编写pwd,学习stty,为用户编程,终端控制和信号,编写一个视频游戏,编写命令解释器sh,编写自己的shell,i/o重定向和管道,服务器与socket,编写web服务器,进程间通信。...
- **说明**:UNIX/Linux 系统中用于发送和接收电子邮件的工具。 - **常见选项**: - `-s "主题"`:设置邮件的主题。 - `-a "附件"`:附加文件。 - **例子**: - `mailx -s "测试邮件" user1@example.com`:向 `...
### Linux基本命令练习知识点 #### 一、基本概念与环境准备 - **SHELL**: SHELL是用户与操作系统之间的接口程序,它...在日常的学习和工作中,熟练运用这些命令将大大提高效率,并有助于深入理解Linux系统的内部机制。
### Linux基本命令详解 在Linux操作系统中,掌握一系列基本命令对于高效管理与操作至关重要。以下是对部分关键命令的深入解析: #### uname -a - **功能**:此命令用于...- **示例**:`nice -n -5 vi &` 使用 root ...
以上总结了文档中提及的关于LINUX与UNIX SHELL编程的核心知识点,涵盖了文件操作、权限管理、文本处理、脚本编写、环境变量配置、工具使用等多个方面,适用于希望学习和提升shell编程技能的读者。
### UnixBible:Psychotic’s Unix Bible Written by Virtual Circuit #### 概述 "Psychotic’s Unix Bible Written by Virtual Circuit" 是一份详尽的指南文档,由 Virtual Circuit 编写,旨在为公众提供一个全面...
- **命令**: 编辑`/etc/inittab`文件,将`id:5:initdefault:`改为`id:3:initdefault:`。 - **说明**: 这将使得系统启动时不进入图形界面,而是进入命令行模式。 #### 3. Linux自动升级更新 - **命令**: 使用`yum ...
### Linux常用命令详解 Linux作为一款强大的开源操作系统,在服务器领域占据着极其重要的地位。对于Linux初学者来说,熟练掌握一些常用的命令是十分必要的。本文将根据提供的内容对这些命令进行详细的解析。 #### ...
### Unix基础知识与Shell编程 #### 一、Unix环境介绍 **1.1 Shell环境基础** - **1.1.1 Shell登录与注销** - **登录程序**: `login` 是Unix系统中最常用的登录程序。 - **修改密码**: 使用 `passwd` 命令可以...
### Unix常用命令详解 #### 第一章:目录及文件操作 **1.1 `ls` 命令** - **用途**: 查看当前目录或指定目录下的文件和子目录列表。 - **基本语法**: `ls [选项] [文件名]` - **常见选项**: - `-a` 显示所有文件...
根据提供的文档信息,我们可以整理出一系列关于Linux的基本操作与实用技巧。下面将详细介绍这些知识点: ### 1. 修改主机名 - **命令**: `hostnamectl set-hostname 新主机名` - **描述**: 可以使用`hostnamectl`...
### Linux常用命令及技巧 #### 一、通用命令 ##### 1. date - **功能**: 显示或设置系统的日期和时间。 - **语法**: `date [选项]` - **示例**: `date`(显示当前日期和时间);`date -s "2023-03-14 12:00:00"`...
### Linux基础入门知识点详解 #### 一、初识Linux——PC上Linux系统常规目录结构 在深入了解Linux之前,...通过以上知识点的学习,可以更好地理解和掌握Linux的基础知识,为进一步深入学习和实际应用打下坚实的基础。
- **编程规则**:编写精灵进程的最佳实践。 - **出错记录**:记录和报告错误的方法。 - **客户机-服务器模型**:精灵进程作为服务器提供服务。 #### 第14章:进程间通信 - **管道**:进程间单向通信的通道。 - **...