* `errno`:线程局部错误码,每个线程独立一份。配合 `perror()`(打印到 stderr)与 `strerror(errno)`(转字符串)解读。 * `ENOENT(2)`:目标不存在。`EACCES(13)`:权限被拒。`EPERM(1)`:操作不允许。 * `ECONNREFUSED(111)`:连接被对端拒绝。`ETIMEDOUT(110)`:等待超时。`EAGAIN/EWOULDBLOCK(11)`:非阻塞资源暂不可用。 * `perror(msg)` / `strerror(e)`:glibc 用户态辅助函数,不发系统调用。