Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103137122
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-16 22:58:09

第一章 概述

1.1 UNIX的版本

    UNIX操作系统是贝尔实验室于六十年代末用C语言研制开发的。经过几十年的发展,已经成为流行于从大型机、小型机

到工作站甚至微机等多种平台的操作系统。UNIX的成功同时也推动了C语言的普及。本教材的目的是讲解UNIX系统下的C程序

设计,使C程序员快速掌握UNIX系统下的编程开发。作者在进行UNIX编程开发的实践过程中,深感实例的重要性,一个简短的C

语言实例往往胜过长篇累牍的文字说明,当然了,文字说明也是必不可少的。本教材将本着实例优先的原则,使您能够对

UNIX编程开发快速入门。


     UNIX的版本不统一是出了名的,从UNIX的发展历史来看,主要有两大流派:AT&T的UNIX系统V版本和加州大学伯克利分

校的BSD版本,在此基础上,各家UNIX厂商均开发了各自的UNIX操作系统。如:工作站厂商中有 HP的hpux、SUN的solaris、SGI

的irix、IBM的AIX等,小型机有VAX上的Ultrix, 微机上有SCO UNIX、微软的Xenix以及随着Internet而风靡全球的Linux

等。由于Windows NT的异军突起,对UNIX的市场形成巨大的威胁,各大UNIX厂商不得不联合起来,在工作站市场上,统一以

系统V版作为标准,加入BSD版本中的一些优点,支持统一的CDE(Common Desktop Environment)窗口环境,以与Windows NT

进行对抗。

1.2 UNIX编程环境

    UNIX操作系统通过Shell程序实现系统与用户的交互,在Shell提示符下,用户键入UNIX命令,即可得到操作系统的输出

结果。BSD系统的常用Shell是C Shell,缺省提示符是"%",系统V的常用Shell是Bourne Shell(现在多为Korn Shell),缺省

提示符是"$",有关Shell的编程,我们在后面的章节中进行介绍。

   UNIX上的标准编译器是cc。在Shell提示符下(以C Shell为例)键入下列命令:
$ cc -o hello hello.c

即将C文件hello.c编译为可执行文件hello。在编译多个文件生成一个可执行文件时,UNIX提供命令make。用户需要针对多个

C文件,按照一定的格式编写一个叫做Makefile的文本文件。下面是SGI上的一个Makefile的例子:
 

CC = cc
CFLAGS = $(DEBUG) -cckr -I$(INC)/X11 -DSYSV
DEBUG = -g
INC = /usr/include
LDFLAGS = -lXext -lXm -lXt -lX11 -lPW -lc
OBJS = initx.o windowx.o
TGTS = showxwin

all:: $(TGTS)
showxwin: $(OBJS)
$(CC) -o $@ $(OBJS) $(CFLAGS) $(LDFLAGS)

大写字母的字串是一些宏,CC是编译器的名字、CFLAGS定义cc的编译开关、DEBUG是调试宏、INC是头文件所在目录、

LDFLAGS定义了编译连接库、OBJ定义了目标文件名、TGTS定义了可执行文件名。在Shell提示符下直接键入:
$ make

即可将Makefile中指定的所有C文件进行编译并生成可执行文件。

1.3 UNIX编程中的基本概念

    在讨论UNIX编程开发前,首先需要阐明系统调用和库函数这两个概念。一个系统调用指一个需要操作系统代表用户程序

来执行某些任务的请求。例如:read是一个系统调用,它请求操作系统存储在一个磁盘设备(或其他设备)上的数据去填充

一个缓冲区。如果任何人在他们想执行任务的时候都能随便访问设备,那么后果将是不可预测的。所以,这种服务必须请求

操作系统来做,它(经常是透明地)记录所有处理每个设备的请求。而一个库函数,并不经常需要操作系统来执行其任务。

例如数学库函数中的sin(),cos()等,这些计算只需要简单地对一个有限序列求和,所以并不需要操作系统干预。在UNIX操作

系统中,有一个常用的命令man,可用来查阅命令、库函数和系统调用等的具体使用方法。传统 Unix联机帮助手册的分节法

为:

1 用户级命令(User-level commands)
2 系统调用(System calls)
3 库函数(Library functions)
4 设备及驱动程序(Devices and device drivers)
5 文件格式(File formats)
6 游戏(Games)
7 杂项(Various miscellaneous stuff - macro packages etc.)
8 系统维护及操作命令(System maintenance and operation commands)
阅读(402) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~