UNIX 系统调用函数errno返回值搜集(in updating )

时间:2022-03-08 19:27:54

当Unix系统级函数遇到错误时,它们会典型地返回-1,并设置全局整数变量errno来表示什么出错了

阅读redis源码的时候,发现如果对系统级函数出错时的errno比较熟悉,写起程序来会游刃有余不少。所以,趁着学习APUE和CSAPP的时候,将自己遇到的常用系统级函数在出错时候返回的errno总结起来, 另外,C语言中文网 http://c.biancheng.net/ 中已经给出了很多系统级函数的错误代码总结,所以此文章主要会用于更新一些我用到过的,以及前述网站没有提到的函数错误代码。

 

1. 进程控制

#include <sys/types.h>
#include <sys/wait.h> pid_t waitpid(pid_t pid, int *status, int options);

如果调用进程没有子进程,那么waitpid返回-1,并设置errno为ECHILD

如果waitpid函数被一个信号中断,那么它返回-1,并设置errno为EINTR

 

2. UNIX标准及其限制:

#include <unistd.h>
long sysconf(int name);
long pathconf(const char *pathname, int name);
log fpathconf(int fd, int name);

如果name 参数并不是一个合适的常量,这3个函数都返回 -1, 并把errno设置为EINVAL

3.文件I/O:

#include <unistd.h>

offt_t lseek(int fd, off_t offset, int whence);

如果文件描述符指向的是一个管道、FIFO或网络套接字,因为这些文件不可以设置偏移量,所以lseek返回-1,并将errno设置为ESPIPE