以下仅列出相对比较重要的内容
1.文件和目录
1).文件系统
Unix文件系统是目录和文件组成的一种层次结构。目录是一个包含许多目录项的文件,而逻辑上,可以认为每个目录项都包含着文件名。文件属性是指文件类型(是普通文件还是目录)、文件的大小、文件的所有者、文件权限以及文件的修改时间等等。如获取相应信息可以用stat和fstat函数
2).文件名
3).路径名
由斜线和文件名组成的序列构成路径名,以斜线开头的路径名称为绝对路径名,否则为相对路径名。注:文件根系统的名字(/)是个特殊的绝对路径,不含文件名
4).工作目录
每一个进程都有一个工作目录(又称当前工作目录),所有绝对路径名都从工作目录开始
2.输入和输出
1).文件描述符
文件描述符通常是一个小的非负整数,内核用它标识一个特定进程正在访问的文件
2).标准输入、标准输出和标准标准出错
当运行一个新程序,所有shell都为其打开三个文件描述符标准输入、标准输出和标准标准出错
3.程序与进程
1).进程控制
对于进程控制,一般由三个主要函数:fork,exec和waitpid(其中exec有六种变体)。
2).线程ID和线程
线程ID与进程ID有相同的作用,但线程ID只在他所属进程内起作用
在一个进程内的所有线程共享同一地址空间、文件描述符、栈以及与进程相关的属性,因为各个线程会访问同一资源,所以要进行线程同步。
4.出错处理
当Unix出错时,常常返回一个负值,而且整型变量errorn通常被设置为含有附加信息的一个值,注:在多线程环境中,多个线程共享进程地址空间,每个线程都有属于它自己的局部errorn以避免一个线程干扰另一个线程
C标准有两个函数可以打印出errorn信息
#include <string.h> char *strerror(int errnum); //返回指向错误信息字符串的指针
#include <stdio.h> void perror(const char *msg); //在标准输出上产生一条错误信息
5.用户标识
1).用户ID
2).组ID
3).附加组ID(一个用户可以属于多个组中)
6.信号
用来通知进程有情况发生的一种技术。进程收到信号后有三种选择1).忽略 2).默认处理方法 3).提供一个函数当信号发生时调用(信号捕捉)。
7.时间值
Unix有两种不同的时间值
1).日历时间 用数据类型time_t ,记录着最近一次的修改时间
2).进程时间 用数据类型clock_t,度量进程使用的中央处理机资源
度量一个进程的时间,Unix使用三个进程时间值:
1).时钟时间 (墙上时钟时间) 它是进程运行时间的总量,值与系统同时运行的进程数有关
2).用户CPU时间 执行用户指令的时间
3).系统CPU时间 该进程实行内核程序所经历的时间
8.系统调用和库函数
系统调用是在内核空间中运行。库函数封装了系统调用,运行在用户空间。