就像这样:

if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) {
...

虽然我读了man fcntl本书,但我不知道它有什么作用.

c

推荐答案

它为文件描述符设置close-on-exec标志,当exec系列函数中的任何一个函数成功时,这会导致文件描述符自动(和原子)关闭.

它还测试返回值以查看操作是否失败,如果文件描述符有效,这将非常无用,因为在任何情况下,该操作都不会在有效的文件描述符上失败.

C++相关问答推荐

如何系统地使用软件预取?

如何在 C++ 中包含使用 C++ 关键字作为标识符的 C 标头?

删除逗号之间的白色字符,但不删除逗号内的内容

如何判断作为参数传递的字符串是否是可修改的字符串

读取输入数据(在 C 中)后,scanf 是否清空缓冲区?

旋转位图并将浮点格式的结果坐标转换回像素数组的整数 x,y 值

在链表中动态存储数据的问题

C中的通用快速排序

代码块输出不同于在线编译器

如何在数组中打印二进制数?

我们可以使用变量根据需要给出数组中元素的数量吗?

| vs < 用于标准输入和标准输出,在 C 中使用拼接、管道和 tee 命令

printf() - 如何添加前导零 + 填充

未定义值的索引处的数组值

union无法解码字节数组

为什么将 free 的返回值转换为 void?

绝对值 abs(x) 使用按位运算符和布尔逻辑

为什么 C++ 初始分配比 C 大得多?

为什么为位字段分配值不返回相同的值?

“for”循环内的“for”循环可以使用相同的计数器变量名吗?