《UNIX环境高级编程》知识点整理(第一章)

来源:互联网 发布:广东省网络医院 编辑:程序博客网 时间:2024/06/05 20:59
**1.4文件和目录**
UNIX文件系统是目录和文件的一种层次结构,所有东西的起点是根的目录


**1.6程序和进程**
程序的执行实例被称为进程,每个进程都有一个唯一的非负数ID,称为进程ID。


调用fork创建一个新进程,被创建的进程称为子进程。fork对父进程返回新的子进程的进程ID(一个非负整数),对子进程返回0。因为fork创建一个新的进程,所以说它被调用一次(由父进程调用),但返回两次(分别在父进程和子进程中返回)。
    
一个进程内所有线程共享同一地址空间,文件描述符,栈及进程相关属性。与进程相同,线程也用ID标识。


线程与进程的关系是 一个进程可以有有一个线程,但也可以有多个线程


**1.7出错处理**
当UNIX系统函数出错时,通常会返回一个负值,而且整形变量errno通常被设置为具有特定信息的值。
   
UNIX在线程环境中,多个线程共享进程的地址空间,每个线程都有属于自己的局部errno。errno有两条规则。第一条:如果没有出错,其值不会被(例)进程清除。第二条:任何函数都不会将errno值设为0


在<errno.h>中错误可以分成两类:致命性错误和非致命性错误。对于致命性错误,无法执行恢复动作。最多能做的事在用户的屏幕上打印出一条出错消息或者将一条出错消息写入到日志文件中,然后退出。对于非致命性错误,有时可以较妥善的进行处理。大多数非致命性错误是暂时的(如资源短缺),当系统中活动较少时,这种出错可能不会发生。


**1.9信号**
信号用于通知进程发生了某种情况


有三种处理信号的方式(1)忽略信号(2)按系统的默认方式处理。如除数0,系统默认当时是终止进程。(3)提供一个函数,信号发生时调用该函数,这种称为捕捉该信号。交给自编函数处理,这样我们就知道产生了什么信号,并按期望的方式处理它


**1.10时间值**
(1)日历时间。就是普通的我们用的时间
(2)进程时间。也被称为CPU时间,用以度量进程使用的中央处理器资源。
当度量一个进程时间的执行时间时,UNIX系统为一个进程维护了3个进程时间值。(1)时钟时间(2)用户CPU时间(3)系统CPU时间。始终时间又称为墙上时钟时间,他是进程运行的时间总量,其值与系统中同时运行的进程数有关。用户CPU时间是执行用户指令所用的时间量。系统CPU时间是以该进程执行内核程序所经历的时间。