手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

unix环境高级编程--第1章 UNIX基础知识

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


)和退出键

(通常是控制-反斜线),他们被用于中断当前运行进程。另一种产生信号的方法是

调用名为k

ill的函数。在一个进程中调用此函数就可向另一个进程发送一个信号。当然这样

做也有些

限制:为了向一个进程发送信号,我们必需是该进程的属主。

实例

回忆一下基本shell程式(程式15)。假如我们调用此程式,然后键入中断键,则

执行此程

序的进程终止。产生这种后果的原因是:对于此信号(SIGINT)的系统默认动作是终

止此进程

。该进程没有告诉系统核对此信号作何处理,所以系统按默认方式终止该进程。



为了更改此程式使其能捕获到该信号,他需要调用signal函数,指定当产生SIGIN

T信号时要

调用的函数名。我们为此编写了名为sig[CD#*2]int的函数,当其被调用时,他只

是打印一

条消息,然后打印一个新提示符。在程式15中加了12行构成了程式18(添加的

12行以行

首的 号指示)。

程式18〓从标准输入读命令并执行他们

因为大多数重要的应用程式都将使用信号,所以在第十章,我们将周详说明信号机

构。

110〓Unix时间值

长期以来,Unix系统一直使用两种不同的时间值。

1日历时间。是自197011,00:00:00以来,国际标准时(UTC)所经过的秒数

累计值(

较早的手册称UTC为格林威冶平时)。这些时间值可用于记录文档最近一次的修改时

间等。

2进程时间。这也被称为CPU时间,用以度量进程使用的中央处理机资源。进程时

间以时钟

滴答计算,多年来,每秒钟取为50,60或100个滴答。系统基本数据类型clock[CD

#*2]t保持

这种时间值。另外,POSIX定义常数CLK[CD#*2]TCK,用其说明每秒滴答数。(常数

CLK〖CD#*

2〗TCK现在已不再使用。我们将在254节说明如何用sysconf函数得到每秒时钟

滴答数。

)

当度量一个进程的执行时间时(见39节),Unix系统使用三个进程时间值。

·时钟时间

·用户CPU时间

·系统CPU时间

时间又称为墙上时钟时间。他是进程运行的时间总量,其值在和系统中同时运行的

其他进程

数有关。无论何时,在我们报告时钟时间时,都是在系统中没有其他活动时进行度

量的。

用户CPU时间是执行用户指令所用的时间量。系统CPU时间是为该进程执行系统核所

经历的时

间。例如,只要一个进程执行一个系统服务,例如read或write,则在系统核内执

行该服务

所花费的时间就计入该进程的系统CPU时间。用户CPU时间和系统CPU时间的和常被

称为CPU时

间。

要取得任一进程的时钟时间、用户时间和系统时间是容易的〖CD2〗只要执行命令

time(1),

其参数是我们要度量其执行时间的命令,例如:

$ cd/usr/include

$ time grep[CD#*2]POSIX[CD#*2]SOURCE */*h>/dev/null

real 0m19:81s

user 0m043s 

sys 0m453s

time命令的输出格式和所使用的shell有关。

在815节中,我们将说明一个运行进程如何取得这三个时间。关于时间,日期的

一般说明

见69节。

111〓系统调用和库函数

任何操作系统都提供多种服务的入口点,由此程式向系统核请求服务。各种版本的

Unix都提

供经良好定义的有限数目的入口点,经过这些入口点进入系统核,这些入口点被称

之为系统

调用(system call),系统调用是我们不能更改的一种Unix特征。Unix版本7提供了

约50个系

统调用,43 BSD提供了约110个,而SVR4则提供了约120个。

系统调用界面总是在Unix程式员手册的第二部分中说明。其定义也包括在C语言中

。这和很

多较早期的操作系统是不同的,这些系统按传统都在机器的汇编语言中定义系统核

入口点。



Unix所使用的技术是为每条系统调用在标准C库中配置一个具备同样名字的函数。

用户进程

用标准C调用序列来调用这些函数,然后,函数用系统所需要的技术调用相应的系

统核服务

。例如函数可将一个或几个C参数送入通用寄存器,然后执行某个产生软中断进入

系统核的

机器指令。从应用角度考虑,我们可将系统调用视作为C函数。

Unix程式员手册的第三部分定义了程式员能够使用的通用函数。虽然这些函数可能

会调用一

个或几个系统核的系统调用,但是他们并不是系统核的入口点。例如,printf函数

会调用wr

ite系统调用以进行输出操作,但函数strcpy(复制一字符串)和atoi(变换ASCII为

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!