Head First C 第九章 进程与系统调用 出错处理
大多数的系统调用以相同的方式出错
需求:想知道系统调用为什么会失败,因此所有的系统调用都遵循“失败黄金法则”。
尽可能的收拾残局
把errno变量设为错误码
返回-1
errno变量是定义在errno.h中的全局变量,和它定义在一起的还有很多标准错误码。
EPERM=1 不允许操作
ENOENT=2 没有该文件或目录
ESRCH=3 没有该进程
使用strerror打印标准错误
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main() {
if (execl("ifconfig", "ifconfig", NULL) == -1)
if (execlp("kryptonite", "kryptonite", NULL) == -1) {
fprintf(stderr, "Can not run ipconfig:%s\n", strerror(errno));
return 1;
}
return 0;
}
- 系统调用在出错时通常会返回-1,但不是绝对的
- 系统调用在出错的同时,将errno变量设为错误码。
来源:oschina
链接:https://my.oschina.net/u/2491285/blog/652246