Head First C 第九章 進程與系統調用 出錯處理

Head First C 第九章 進程與系統調用 出錯處理

大多數的系統調用以相同的方式出錯

需求:想知道系統調用爲何會失敗,所以全部的系統調用都遵循「失敗黃金法則」。code

儘量的收拾殘局進程

把errno變量設爲錯誤碼ip

返回-1string

errno變量是定義在errno.h中的全局變量,和它定義在一塊兒的還有不少標準錯誤碼。it

EPERM=1 不容許操做io

ENOENT=2 沒有該文件或目錄class

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變量設爲錯誤碼。
相關文章
相關標籤/搜索