这个嵌套的fcntl做什么?

See*_*ddo 0 c

我在书中发现了严密加密 - 实用 - 现代加密的代码.

什么是嵌套fcntl做什么?获取文件描述符和Ored它FD_CLOEXEC,不清楚我在这里发生了什么.

#ifndef O_CLOEXEC 
   fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
Run Code Online (Sandbox Code Playgroud)

为清楚起见省略了其他代码

小智 5

获取文件描述符

不,它获取文件描述符的标志.请参见fcntl()手册页.外部调用然后设置这些标志,另外FD_CLOEXEC设置.这可以确保在exec()调用族的函数时(即,当用新的程序图像替换该过程时)关闭文件.这是一种安全措施,它可以避免将打开的文件意外泄漏到您传递控制权的程序中exec*().

它仅在没有O_CLOEXEC可用时才会完成,这允许在打开文件时设置此标志.