1 登录名
系统在其口令文件 /etc/passwd文件中查看登录名。口令文件中的登录项由冒号分割依次是:登录名、加密口令、数字用户ID(205)、数字组ID(105)、注释字段、起始目录(/home/sar)、以及shell程序(/bin/ksh)。
sar:x:205:105:Stephen:/home/sar:/bin/ksh
2 文件系统
UNIX 文件系统是目录和文件的一种层次结构,起始是根目录root目录(名称是一个字符 “/”)
3 文件名
斜线(/)和空格不能出现在文件名中,斜线用来分割路径,空格用来种植一个路径名
创建目录时,自动创建两个文件名.(指向当前目录)和..(指向上一层目录)
4 输入和出输出
文件描述符通常是一个小的非负整数
运行一个新程序的时候会打开三个文件描述符: 标准输入、标准输出、标准错误(standard input output error)。
5 不带缓冲的I/O
函数open、read、write、lseek、close 提供不带缓冲的IO、这些文件都使用文件描述符
6 程序
程序是存储在磁盘上某目录下下的可执行文件
7 进程和进程ID
进程是程序的执行实例
UNIX系统为了确保每个进程都有一个唯一的数字标识,给每个进程分配一个长整型的ID,使用getpid()可以获取
8 线程和线程ID
线程是系统分配资源的最小单位,一个进程内的所有线程共享同一个地址空间、文件描述符、栈以及进程的相关属性。
与进程ID相同线程也有唯一标识,线程ID
9 出错处理
当UNIX系统出错时,通常会返回一个负值,通常会返回一个负值,具有特定的意义。
文件<errno.h>中定义了errno以及可以赋予它的各种常量,常量以字符E开头
POSIX和ISO将errno定义为一个符号,它扩展称为一个可以修改的整型左值。它可以是一个包含出错编号的整数。也可以是一个返回出错编号指针的函数。
支持线程的环境中,多线程共享进程地址空间,每个线程都有自己局部的errno,例如Linux支持多线程存取errno,将其定义为:
extern int *_errno_location(void);
#define errno (*_errno_location())
对于errno 的两条使用规则:
1 没有出错,其值不会被例程清除。因此仅在函数的返回值指明出错时检验其值
2 任何函数都不会将errno设置为0,而且在<error.h>定义的所有常量都不为0
C标准定义了两个函数,用于打印出错信息
#include<string.h>
char *strerror(int errnum)
#include <stdio.h>
void perror(const jchar *msg)
10 错误恢复
致命性错误只能打印或者输出日志后退出
非致命性错误可以妥善处理,比如等待资源短缺
11 用户标识
用户ID和组ID可以使用getuid() getgid()获取
12 信号
用于通知进程
1 忽略信号
2 安系统默认方式处理
3 提供一个函数,信号发生时调用该函数,
13 时间值
日历时间:1970.1.1
进程时间:CPU时间