我在书中找到了这个代码。
nestedfcntl
在做什么?
获取文件描述符并用FD_CLOEXEC
对其进行存储,我不清楚这里发生了什么。
#ifndef O_CLOEXEC
fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
为了清楚起见,省略了其他代码。
最佳答案
获取文件描述符
不,它获取文件描述符的标志。请参见fcntl()
manual page。然后外部调用设置这些标志,并另外设置FD_CLOEXEC
。这样可以确保在调用exec()
系列的函数时(即用新程序映像替换进程时)关闭文件。这是一种安全措施,它可以避免将打开的文件意外泄漏给通过exec*()
将控制权传递给的程序。
只有在没有可用的O_CLOEXEC
时才执行此操作,这允许在打开文件时设置此标志。
关于c - 这个嵌套的fcntl有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47461440/