文档章节

Head First C 第九章 进程与系统调用 出错处理

AlexTuan
 AlexTuan
发布于 2016/04/04 11:45
字数 253
阅读 33
收藏 0

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变量设为错误码。

© 著作权归作者所有

AlexTuan
粉丝 4
博文 27
码字总数 17966
作品 0
程序员
私信 提问
Head First C 第九章 进程与系统调用 exec函数

Head First C 第九章 进程与系统调用 exec函数 系统调用 C程序无论做什么,都要靠操作系统。如果它想与硬件打交道,就要进行系统调用系统调用是操作系统内核的函数。 什么是内核? 在大部分计...

AlexTuan
2016/04/03
42
0
Head First C 第九章 进程与系统调用 用fork()+exec()运行子进程

Head First C 第九章 进程与系统调用 用fork()+exec()运行子进程 问题引入:当你想循环使用exec调用另外一个程序时,发现只调用了一次就结束了。这是因为,exec函数通过运行新程序来替换当前...

AlexTuan
2016/04/04
69
0
Head First C 第十章 进程间通信 闹钟

Head First C 第十章 进程间通信 闹钟 主要介绍一个函数,,的作用是:接收一个无符号整型参数,作为定时的秒数,系统会计时,时刻到达时,给进程发送一个SIGALRM的信号。 关于alarm() 注意 ...

AlexTuan
2016/04/17
40
0
《windows核心编程系列》谈谈线程基础

线程基础 与前面介绍的进程一样,线程也有两部分组成。一个是线程内核对象。它是一个数据结构,操作系统用它来管理线程以及用它来存储线程的一些统计信息。另一个是线程栈,用于维护线程执行...

长平狐
2012/10/08
112
0
Head First C 学习日志 第十章 进程间通信 捕捉信号

Head First C 第十章 进程间通信 捕捉信号 关于信号 信号是操作系统控制程序的方式,举个栗子,操作系统在看到用户输入了Ctrl+C时,就会向程序发送中断信号。信号映射表 | 信号 | 处理函数 ...

AlexTuan
2016/04/17
32
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
今天
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部