UNIX内核的接口称之为系统调用。公用函数库构建在系统调用接口之上。应用程序既可以使用公用函数库,也可以使用系统调用。
UNIX shell 是一个特殊的应用程序,它为其他应用程序提供了一个接口。
路径名由斜线分隔的一个或者多个文件名组成的序列:
文件系统根的名字 / 是一个特殊的绝对路径名。它不包含任何其他的字符。
查看UNIX系统ls命令的 man帮助手册:man 1 ls或者 man -s1 ls。
1表示第一部分。由于很多命令的说明文档过于庞大,因此 UNIX将说明文档划分成九个部分。常用的段有:
1: 可执行程序或者 shell command的说明2: 系统调用的说明3: 库函数的说明4: 特殊文件(通常位于/dev/)的说明8: 系统管理员命令的说明(通常只有 root可用)ls表示shell command,即待查找的目标我们可以将 LINUX 操作系统中的 man手册用中文的man替代。方法为(UBUNTU操作系统下):
sudo apt-get install manpages-zh
sudo vi /etc/manpath.config
将 man的配置文件/etc/manpath.config中所有的/usr/share/man替换为/usr/share/man/zh_CN
每个进程都有一个工作目录,有时称他为当前工作目录。所有的相对路径名都是从工作目录开始解释。
可以用
chdir函数更改其工作目录
登录时, shell的工作目录设置为起始目录
UNIX系统中,每个进程都有一个唯一的数字标志符,称为进程ID(一个非负整数)。
通常一个进程只有一个线程。但是你也可以创建多个线程。
用户和组:
root,它具有超级用户权限。当 UNIX 系统函数出错时,通常会返回一个负值,同时整型变量 errno 通常被设置为具有特定信息的值。
<errno.h> 定义了 errno 以及赋予它的各种常量,这些常量以 E字符开头errno,以避免一个线程干扰另一个线程。对于 errno 的使用要注意两条规则:
errno的值不会被清除.因此只有在函数的返回值指明出错了时,检查errno才有意义errno的值清零,且在<errno.h>中定义的所有常量都不为0strerror/perror函数:用于处理错误信息
#include<string.h>
char *strerror(int errnum);
#include<stdio.h>
void perror(const char*msg);
errnum(通常就是 errno值)映射为一个出错消息字符串,并且返回此字符串的指针
errno的值)errno的当前值,在标准错误上产生一条出错消息,然后返回。这条出错消息首先是 msg指向的字符串,后面是冒号,后面是一个空格,后面是对应于 errno值的出错消息,最后是一个换行符。
#include "apue.h" #include <error.h> int main(int argc, char *argv[]) { fprintf(stderr, "EACCES: %s\n",strerror(EACCES)); errno = ENOENT; perror(argv[0]); exit(0); }

出错恢复:可以将<errno.h>中定义的错误分成两类:
与资源相关的非致命性错误包括:EAGAIN、ENFILE、ENOBUFS、ENOLCK、ENOSPC、EWOULDBLOCK.其典型的处理方法是:延迟一段时间,然后重试。
ENOMEM 也是非致命性出错EBUSY 指明 共享资源正在使用是,也可视为非致命性出错处理EINTR 中断一个慢速系统调用时,可以视为非致命性出错处理UNIX 系统使用两种时间:
time_t数据类型来保存这种时间值。clock_t数据类型保存这种时间值。当度量一个进程的执行时间时,UNIX系统为一个进程维护了3个进程时间值:
read系统调用,则内核执行该系统调用的时间计入系统 CPU 时间用户CPU时间和系统CPU时间之和称作 CPU 时间
运行 shell 命令 time 可以获取进程的时钟时间、用户时间和系统时间。time的参数请参考 man手册

原文:http://www.cnblogs.com/BinBinStory/p/7296346.html