open函数中O_CLOEXEC标志的开关
来源:互联网 发布:房地产评估算法 编辑:程序博客网 时间:2024/04/30 17:48
Linux中,文件描述符有一个属性:CLOEXEC,即当调用exec()函数成功后,文件描述符会自动关闭。在以往的内核版本(2.6.23以前)中,需要调用 fcntl(fd, F_SETFD, FD_CLOEXEC) 来设置这个属性。而新版本(2.6.23开始)中,可以在调用open函数的时候,通过 flags 参数设置 CLOEXEC 功能,如 open(filename, O_CLOEXEC)。
虽然新版本支持在open时设置CLOEXEC,但是在编译的时候还是会提示错误 - error: ‘O_CLOEXEC’ undeclared (first use in this function)。原来这个新功能要求我们手动去打开,需要设置一个宏(_GNU_SOURCE)。可通过以下两种方法来设置这个宏以打开新功能:
1. 在源代码中加入 #define _GNU_SOURCE
2. 在编译参数中加入 -D_GNU_SOURCE
gcc 还有很多其他的开关,具体可以参考
--------------------------- /usr/include/features.h -----------------------------------------------
These are defined by the user (or the compiler) to specify the desired environment:
__STRICT_ANSI__ ISO Standard C.
_ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
_POSIX_SOURCE IEEE Std 1003.1.
_POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
if >=199309L, add IEEE Std 1003.1b-1993;
if >=199506L, add IEEE Std 1003.1c-1995;
if >=200112L, all of IEEE 1003.1-2004
_XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
Single Unix conformance is wanted, to 600 for the
upcoming sixth revision.
_XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
_LARGEFILE_SOURCE Some more functions for correct standard I/O.
_LARGEFILE64_SOURCE Additional functionality from LFS for large files.
_FILE_OFFSET_BITS=N Select default filesystem interface.
_BSD_SOURCE ISO C, POSIX, and 4.3BSD things.
_SVID_SOURCE ISO C, POSIX, and SVID things.
_ATFILE_SOURCE Additional *at interfaces.
_GNU_SOURCE All of the above, plus GNU extensions.
_REENTRANT Select additionally reentrant object.
_THREAD_SAFE Same as _REENTRANT, often used by other systems.
_FORTIFY_SOURCE If set to numeric value > 0 additional security
measures are defined, according to level.
------------------------------------------------------------------------------------------------
- open函数中O_CLOEXEC标志的开关
- open函数中O_CLOEXEC标志的开关
- open函数中O_CLOEXEC标志的开关
- open函数中O_CLOEXEC标志的开关
- open函数中O_CLOEXEC标志的开关
- open中的 O_CLOEXEC 标志
- open O_CLOEXEC标志
- open函数O_CLOEXEC作用
- [Linux]O_CLOEXEC 标志
- 浅析open函数O_CLOEXEC模式和fcntl函数FD_CLOEXEC选项
- 浅析open函数O_CLOEXEC模式和fcntl函数FD_CLOEXEC选项
- 浅析open函数O_CLOEXEC模式和fcntl函数FD_CLOEXEC选项
- open函数的标志的意思
- 浅析linux下open函数O_CLOEXEC模式和fcntl函数FD_CLOEXEC选项
- (MSSQL)在数据表中设置标志开关,进行触发器的有选择工作
- linux open 函数O_DIRECT标志位使用说明
- linux open 函数O_DIRECT标志位使用说明
- open() 标志位的设置与清除
- datetime 和 smalldatetime
- Linux目录的r和x权限的区别
- 初学C++基础知识
- 朴素贝叶斯分类的原理与流程——转张洋
- 杭电hdu 2000 ASCII码排序
- open函数中O_CLOEXEC标志的开关
- 从cookie中读取uin需要注意的问题
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)
- 解决Cognos启动报错CFG-ERR-0106
- xsl页面
- 模拟银行业务中取号调度系统
- 一道表达式的经典试题
- Delphi 2007下安装GraphicEx组件
- 各种超酷网站