- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
考虑 APUE 书中的以下示例:
#include <errno.h>
#include <sys/socket.h>
int initserver(int type, const struct sockaddr *addr,
socklen_t alen, int qlen)
{
int fd;
int err = 0;
if ((fd = socket(addr->sa_family, type, 0)) < 0)
return -1;
if (bind(fd, addr, alen) < 0) {
err = errno;
goto errout;
}
if (type == SOCK_STREAM || type == SOCK_SEQPACKET) {
if (listen(fd, qlen) < 0) {
err = errno;
goto errout;
}
}
return(fd);
errout:
close(fd);
errno = err;
return -1;
}
问题是为什么errno
会被保存然后恢复?因为可以在close(fd)
中设置?那为什么可以忽略呢?
最佳答案
是的,(可能)是因为 close
调用。 close
的返回和可能的错误被忽略,因为 initserver
的调用者很可能想要来自 socket
或 listen 的错误
函数,如果其中一个失败,而不是来自 close
函数,它可以将 errno
设置为完全不相关的东西。
关于c - 套接字:处理 APUE 书中的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8883562/
main 函数与进程终止 众所周知,main 函数为 unix like 系统上可执行文件的"入口",然而这个入口并不是指链接器设置的程序起始地址,后者通常是一个启动例程,它
概览 开门见山先上图 界定一些术语,方便后面说明: GMT:格林威治平均时,太阳每天经过位于英国伦敦郊区的皇家格林威治天文台的时间为中午 12 点,
前言 Unix like 系统和 windows 的最大区别就是有一套标准的系统信息数据文件,一般存放在 /etc/ 目录下,并且提供了一组近似的接口访问和查询信息,这些基础设施让系统管理看起来
请帮我弄清楚以下代码片段有什么问题,它来自 APUE 第 8.6 节(W Richard Stevens,Stephen A Rago Advanced Programming in the Unix
在APUE section 8.3 fork function中,关于父子进程之间的文件共享, 它说:父子共享相同的文件偏移量很重要。 而在 8.9 节 Race Conditions 中,有一个例子
是否有可能构建一台具有 32GB RAM 的机器,并使用大约 28GB 的 OpenCL? 我当前的 APU 是 Athlon 5350,报告的“全局内存大小”为 2142658560。我使用 C
考虑 APUE 书中的以下示例: #include #include int initserver(int type, const struct sockaddr *addr,
sleep2的apue中的代码如下: #include #include #include #include static jmp_buf env_alrm; static void sig_
在图11.2 APUE 2nd中,有一段代码演示了threads API的用法,如下: #include #include pthread_t ntid; void printids(const
书中定义了3个自定义函数: int serv_listen(const char *name); //Returns: file descriptor to listen on if OK, nega
我正在尝试执行以下程序-在 APUE.3E -> filedir -> filetype.c 中(这是我下载 APUE.3E 时默认出现的。我没有进行任何更改) 但是当我编译时,这是我收到的错误: m
哪一个是正确的?1. pthread_mutex_lock ... pthread_cond_broadcast pthread_mutex_unlock 2. pthread_mutex_lock
我正在向APUE3e学习 #include "apue.h" #include int main(int argc, char *argv[]) { DIR *dp; struct
我看了《APUE》,我发现10.11的例子不能创建正确的答案。10.11 文件是: static void sig_quit( int ); int main( void ) { si
#include #include static void charatatime(char *str) { char *ptr; int c; setbuf(stdout,N
我正在学习 APUE 10.3 信号,只是混淆了 SIG_ERR、SIG_DFL 和 SIG_IGN 的定义。这是定义: #define SIG_ERR (void (*)())-1 #defin
是否可以在 A10-7800 上启用 OpenCL,而不将其用于 X 服务器?我有一个用于 GPGPU 编程的 Linux 机器。独立的 GEForce 740 卡用于 X 服务器和运行我开发的 Op
APUE 第 7 章说此代码段将退出,退出代码不是 0(示例中为 13)。但它在我的电脑上以代码 0 退出: #include main() { printf("hello, worl
在“Unix 环境高级编程”的示例中,以下示例程序创建一个文件,然后使用 lseek 将文件指针移动到更远的地址,从而在文件中放置一个“洞”。作者说中间的空格用“0”填充。我想看看那些“0”是否会打印
我有一台配备 AMD E-1800 APU 和 4GB RAM 的 TurboX 笔记本电脑,我将其用于开发目的,但 CPU 运行不佳,我在上面安装了 ubuntu 16.04 amd64。每当我在
我是一名优秀的程序员,十分优秀!