标签:har bsp etc exit 共享资源 数字 content 部分 get
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
手册
标签:har bsp etc exit 共享资源 数字 content 部分 get
原文地址:http://www.cnblogs.com/BinBinStory/p/7296346.html