没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第一章 概述
的版本
操作系统是贝尔实验室于六十年代末用 语言研制开发的。经过几十年的发展,已经成为流行
于从大型机、小型机
到工作站甚至微机等多种平台的操作系统。 的成功同时也推动了 语言的普及。本教材的目的是
讲解 系统下的 程序设计,使 程序员快速掌握 系统下的编程开发。作者在进行 编
程开发的实践过程中,深感实例的重要性一个简短的
语言实例往往胜过长篇累牍的文字说明,当然了,文字说明也是必不可少的。本教材将本着实例优先的
原则,使您能够对
编程开发快速入门。
的版本不统一是出了名的,从 的发展历史来看,主要有两大流派: 的 系统
版本和加州大学伯克利分
校的 版本在此基础上各家 厂商均开发了各自的 操作系统。如工作站厂商中有 的
、 的 、
的 、 的 等,小型机有 上的 !, 微机上有 "、微软的 #$ 以及随着
$!#$#! 而风靡全球的 %$
等。由于 &$'( 的异军突起,对 的市场形成巨大的威胁,各大 厂商不得不联合起来,
在工作站市场上,统一以
系统 版作为标准,加入 版本中的一些优点,支持统一的 )(**$#+!
)$,$*#$!)窗口环境,以与 &$'(
进行对抗。
- 编程环境
操作系统通过 # 程序实现系统与用户的交互,在 # 提示符下,用户键入 命令,即
可得到操作系统的输出
结果。 系统的常用 # 是 #,缺省提示符是./.,系统 的常用 # 是 $##
(现在多为 0$#)缺省
提示符是.1.,有关 # 的编程,我们在后面的章节中进行介绍。
上的标准编译器是 22。在 # 提示符下(以 # 为例)键入下列命令:
1223##2
即将 文件 #2 编译为可执行文件 #。在编译多个文件生成一个可执行文件时, 提供命令
*+#。用户需要针对多个 文件,按照一定的格式编写一个叫做 +#4# 的文本文件。下面是 上
的一个 +#4# 的例子:
522
6%517)8322+317893:
)53;
599$2'#
%6%53#!3*3!33&32
"<5$!($'(
5(($
178
(($17"<8
17831=17"<8176%817%6%8
大写字母的字串是一些宏, 是编译器的名字、6% 定义 22 的编译开关、) 是调试宏、
是头文件所在目录、
%6% 定义了编译连接库、"< 定义了目标文件名、 定义了可执行文件名。在 # 提示符下
直接键入:
1*+#
即可将 +#4# 中指定的所有 文件进行编译并生成可执行文件。
> 编程中的基本概念
在讨论 编程开发前,首先需要阐明系统调用和库函数这两个概念。一个系统调用指一个需要操
作系统代表用户程序来执行某些任务的请求。例如:#' 是一个系统调用,它请求操作系统存储在一个
磁盘设备(或其他设备)上的数据去填充一个缓冲区。如果任何人在他们想执行任务的时候都能随便访
问设备,那么后果将是不可预测的。所以,这种服务必须请求操作系统来做,它(经常是透明地)记录
所有处理每个设备的请求。而一个库函数,并不经常需要操作系统来执行其任务。
例如数学库函数中的 $78278等,这些计算只需要简单地对一个有限序列求和,所以并不需要操作系
统干预。在 操作系统中,有一个常用的命令 *$,可用来查阅命令、库函数和系统调用等的具体
使用方法。传统 $ 联机帮助手册的分节法
为
用户级命令(#3#,#2**$')
-系统调用(?!#*2)
>库函数(%@?A$2!$)
B设备及驱动程序(#,2#$''#,2#',#)
C文件格式(6#A*!)
D游戏(*#)
E杂项(*2#$#!F3*22+;##!2)
G系统维护及操作命令(?!#**$!#$$2#$'#!$2**$')
第二章 标准输入/输出库
-概述
本章介绍 的标准输入9输出库, 提供一些库函数完成高级输入9输出,为程序员提供了三方面
的主要功能:
H自动开辟缓冲区。即使一次读或写的数据只有几个字节,库函数仍然在大到由数千个字节组成的 .块.中
执行实际输入或输出(缓冲区大小通常由头文件 !' 中的常量 6I 定义)。这个缓冲区在内部开
辟给库函数使用,对于程序员来说是透明的;
H自动执行输入和输出转换。
H输入输出被自动格式化。以上两点在 语言的教程中一般均以讲到。
在标准输入9输出库中,一个文件被称为一串字符流,并且被一个指向类型为 6%) 的目标指针所描述,该
指针被称为文件指针。在 中文件指针 !'$、!'!、!'# 是预先定义好的,分别对应标准输入
(键盘)、标准输出(终端屏幕)和标准错误输出。
--库函数介绍
H文件创建和关闭
A#$78用于打开已存在的文件或创建新文件
H文件读写
、 一次处理一个字符 ;#!278!278
-、 一次处理多个字符 A;#!78A!78
>、 文件的二进制读写 A#'78A(!#78
B、 文件的格式化输入9输出 A2$A78A$!A78
C、 字符串的格式化输入9输出 2$A78$!A78
H文件移动定位
用于在文件中移动的标准输入9输出库函数是 A##+78,它接收三个参数:一个文件指针指向一个打开的字
符流;一个整数指明要移动的字节数,称为 F#!;一个整数指明从文件中什么位置移动。
第三章 低级输入/输出
>概述
与第二章内容相对应,本章介绍 系统中通过系统调用来实现的输入9输出,通常称之为低级输入9输
出。这些系统调用能够直接实现对设备(如磁带驱动器等)的输入和输出,程序员能够决定要使用的缓冲
区的大小,而不象标准输入9输出库函数那样透明设定缓冲区大小。
在标准输入9输出库中,一个文件是由一个文件指针来对应的。当使用低级界面时,则用一个文件描述字
对应一个文件。文件描述字是一个小的整数。有 > 个事先定义的文件描述字 J、 和 -,分别对应标准输
入、标准输出和标准错误输出。一般说来,文件描述字都是作为系统调用的第一个参数给出的。
>-相关系统调用介绍
H文件创建和关闭
#$78用于为读写而打开一个文件,或用它来创建新文件。
$!#$72$!2K!$!L;9K*'#M!*'#K98N
#$ 使用三个参数:一个字符串 ! 包含要打开的文件名;一个整数 L; 指明文件将被如何打开;
整数 *'# 在创建文件时使用。常用的 L; 包括:
"MO"%:打开文件仅用于读。
"M&O"%:打开文件仅用于写。
"MO&O打开文件用于读写。
"MO)如果文件不存在,则创建,此时 *'# 作为第三个参数给出。
2#78用于关闭一个已经打开的文件。
H文件读写
#'78用于读文件,格式为:
#'7$!4'#,'K@AP#M!$@?!#8N
三个参数说明如下:4#'# 是文件描述字;指针 @A 指向一个数据将被读入的缓冲区;整数 $@?!# 指
明要读的字节个数。成功时返回实际读入的字节数,出错则返回3。
(!#78用于写文件,与 #' 类似,格式为:
(!#7$!4'#,'K@AP#M!$@?!#8N
三个参数说明如下:4#'# 是文件描述字;指针 @A 指向一个数据将被写入的缓冲区;整数 $@?!# 指
明要写的字节个数。成功时返回实际写入的字节数,出错则返回3。
H文件移动定位
用于在文件中移动的低级输入9输出系统调用是 ##+78,与 A##+78类似,它也接收三个参数:一个文件
描述字对应一个打开的文件;一个整数指明要移动的字节数,称为 F#!;一个整数指明从文件中什么位
置移动。
H复制文件描述字
有时候有不只一个文件描述字对应一个文件。当创建子进程时(参加后面关于进程开发的章节),这一点
很常用。为了获得一个新的文件描述字,并保证其与 A' 对应同一个文件,应调用
A'-5'7A'8
A'- 现在和 A' 对应同一个文件,并且和 A' 一样在文件中有相同的位置。
四章 文件与目录编程
B基本概念
剩余39页未读,继续阅读
资源评论
- 纳什鼎鼎2012-06-03不错的东西,适合我这样的unix下c初学者
jiyanwei01
- 粉丝: 5
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功