需求:想知道系統調用爲何會失敗,所以全部的系統調用都遵循「失敗黃金法則」。code
儘量的收拾殘局進程
把errno變量設爲錯誤碼ip
返回-1string
errno變量是定義在errno.h中的全局變量,和它定義在一塊兒的還有不少標準錯誤碼。it
EPERM=1 不容許操做io
ENOENT=2 沒有該文件或目錄class
ESRCH=3 沒有該進程變量
#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變量設爲錯誤碼。