原文地址:http://hi.baidu.com/passerryan/item/d81eac1671ce3d5cf0090e2b

这是fcntl的一个Flag标志。

fcntl(fd, F_SETFD, FD_CLOEXEC);

// 这里设置为FD_CLOEXEC表示当程序执行exec函数时本fd将被系统自动关闭,表示不传递给exec创建的新进程, 如果设置为fcntl(fd, F_SETFD, 0);那么本fd将保持打开状态复制到exec创建的新进程中

FD_CLOEXEC用来设置文件的close-on-exec状态标准。在exec()调用后,close-on-exec标志为0的情况,此文件不被关闭。非零则在exec()后被关闭。默认close-on-exec状态为0,需要通过FD_CLOEXEC设置

---------------------------------------------------------------------------------------------------------------

int flags;
int dummy = 0;
if ((flags = fcntl(fd, F_GETFL, dummy)) < 0){
    debug(50, 0) ("FD %d: fcntlF_GETFL: %s\n", fd, xstrerror());
    return;
}
if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) <0)
   debug(50, 0) ("FD %d: setclose-on-exec failed: %s\n", fd, xstrerror());

---------------------------------------------------------------------------------------------------------------

fcntl(文件描述词操作)

相关函数

open,flock

表头文件

#include<unistd.h>
#include<fcntl.h>

定义函数

int fcntl(int fd , int cmd);
int fcntl(int fd,int cmd,long arg);
int fcntl(int fd,int cmd,struct flock * lock);

函数说明

fcntl()用来操作文件描述词的一些特性。参数fd代表欲设置的文件描述词,参数cmd代表欲操作的指令。
有以下几种情况:
F_DUPFD用来查找大于或等于参数arg的最小且仍未使用的文件描述词,并且复制参数fd的文件描述词。执行成功则返回新复制的文件描述词。请参考dup2()。F_GETFD取得close-on-exec旗标。若此旗标的FD_CLOEXEC位为0,代表在调用exec()相关函数时文件将不会关闭。
F_SETFD 设置close-on-exec 旗标。该旗标以参数arg 的FD_CLOEXEC位决定。
F_GETFL 取得文件描述词状态旗标,此旗标为open()的参数flags。
F_SETFL设置文件描述词状态旗标,参数arg为新旗标,但只允许O_APPEND、O_NONBLOCK和O_ASYNC位的改变,其他位的改变将不受影响。
F_GETLK 取得文件锁定的状态。
F_SETLK 设置文件锁定的状态。此时flcok 结构的l_type值必须是F_RDLCK、F_WRLCK或F_UNLCK。如果无法建立锁定,则返回-1,错误代码为EACCES或EAGAIN。
F_SETLKW F_SETLK作用相同,但是无法建立锁定时,此调用会一直等到锁定动作成功为止。若在等待锁定的过程中被信号中断时,会立即返回-1,错误代码为EINTR。参数lock指针为flock结构指针,定义如下
struct flcok
{
short int l_type;
short int l_whence;
off_t l_start;
off_t l_len;
pid_t l_pid;
};
l_type 有三种状态:
F_RDLCK 建立一个供读取用的锁定
F_WRLCK 建立一个供写入用的锁定
F_UNLCK 删除之前建立的锁定
l_whence 也有三种方式:
SEEK_SET 以文件开头为锁定的起始位置。
SEEK_CUR 以目前文件读写位置为锁定的起始位置
SEEK_END 以文件结尾为锁定的起始位置。

返回值

成功则返回0,若有错误则返回-1,错误原因存于errno.

fcntl设置FD_CLOEXEC相关推荐

  1. linux fcntl 设置阻塞,Linux fcntl函数设置阻塞与非阻塞

    转自http://www.cnblogs.com/xuyh/p/3273082.html 用命令F_GETFL和F_SETFL设置文件标志,比如阻塞与非阻塞 F_SETFL     设置给arg描述符 ...

  2. fcntl(nListenId, F_SETFD, FD_CLOEXEC) 的作用

    转自 http://blog.csdn.net/ustc_dylan/article/details/6930189 通过fcntl设置FD_CLOEXEC标志有什么用? close on exec, ...

  3. Android 启动分析 1

    1.概述 Android虽然被称作一种操作系统,其实它仍然使用的Linux的kernel.所以本质上可以说,Android是一个适用于移动设备的Linux发行版.也就是说,之前的分析Linux内核的经 ...

  4. Linux应用程序编程

    系统编程概念 库函数:C语言标准库中ANSI C.ISO C.GNU C.POSIX ANSI C标准同时出现的就是ISO组织,将ANSI C加入了ISO的大家庭,定义了ISO C.除了在格式和排版等 ...

  5. Linux fcntl 函数详解

    接口 #include <fcntl.h>int fcntl(int fd, int cmd, ...); 返回值: 正确返回值根据命令码而定,错误返回-1. fcntl是用来修改已经打开 ...

  6. Linux fcntl 函数全解

    文章目录 一.函数声明 1.1 cmd可选值 注意: 二.实例 2.1 F_DUPFD / F_DUP_CLOEXEC(Duplicating a file descriptor) 2.2 F_GET ...

  7. java socket 阻塞模式_(四) 如何将socket设置为非阻塞模式

    1. windows平台上无论利用socket()函数还是WSASocket()函数创建的socket都是阻塞模式的: SOCKET WSAAPI socket(    _In_ int af,   ...

  8. linux 高级IO函数之fcntl mmap/munmap

    fcntl函数提供了对文件描述符的各种控制操作.另外一个常见的控制文件描述符属性和行为的系统调用是ioctl,而且ioctl比fcntl能够执行更多的控制.但是对于控制文件描述符常用的属性和行为,fc ...

  9. IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响—O_NONBLOCK(open使用)、IPC_NOWAIT(msgrcv)、MSG_DONTWAIT

    非阻塞IO 和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明:        基本概念: 阻塞IO:: socket 的阻塞模 ...

最新文章

  1. 数据采集与分析的那些事——从数据埋点到AB测试
  2. 测试nb信号的软件_NB-IoT和LORA,谁才是真正的低功耗?从数据看真相
  3. VTK:可视化算法之LOxGrid
  4. sscanf,sscanf_s及其相关用法(字符串格式化为其他类型)
  5. 【CMAKE系列】cmake中CMakeLists.txt脚本的常用语法
  6. Server object instance creation failed on all SOC machines
  7. [Java] 蓝桥杯 BASIC-1 基础练习 闰年判断
  8. 数据库 : 事物以及隔离性导致的问题
  9. 我们公司使用了 6 年的分布式锁,很是牛逼啊!
  10. 黄聪:css3实现图片划过一束光闪过效果(图片光影掠过效果)
  11. MATLAB如何配平化学方程,【如何配平化学方程式】作业帮
  12. 【IoT】5.Business Strategy 商业战略
  13. java当前不可用,java代码向服务端狂发消息,导致的服务器连接通道不可用
  14. Nand Flash控制器
  15. 浙大提出神经3D重建新工作!收录图形学顶会SIGGRAPH 2022
  16. 记录一下之前写的文章--测试之不可承受之轻
  17. 数据技术-分析报告如何写
  18. android开发者mac(含M1芯片)电脑全新配置2022
  19. 【嵌入式底层知识修炼】基于通用消抖算法,拓展通用非阻塞Key按键识别算法
  20. IE8和IE9对于前端来说有什么区别

热门文章

  1. 【k8s】debug iptable 并追踪
  2. ip后面带端口号如何做域名解析
  3. 细数银行7大手续费 这些冤枉钱别再交了
  4. 计算机参数含义,硬盘的各项基本参数含义解析
  5. 模运算——开启密码学学习之路
  6. RandomAccess接口详解
  7. GPS导航电文——第四、五子帧数据解析
  8. Albert Einstein—一个真正值得敬仰的伟人(什么超级什么星什么一班都靠边站兼滚蛋!)...
  9. 超实用带格子的便签 便签格子的用法
  10. 金蝶K/3 Cloud 实施笔记