FD_CLOEXEC fcntl()标志是做什么的?
像这样:
if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) { ...
虽然我读过man fcntl
,但是我弄不清楚它的function。
它为文件描述符设置close-on-exec标志,当任何exec
系列函数成功时,这将导致文件描述符自动(和primefaces地)closures。
它还会testing返回值以查看操作是否失败,如果文件描述符有效,则这是无用的,因为在有效的文件描述符中没有该操作应该失败的条件。
它标记文件描述符,以便在进程或任何子fork()
s调用exec*()
系列函数之一时自动close()
d。 这有助于防止将文件描述符泄漏到由例如system()
运行的随机程序。
如果有任何其他进程执行您打开的文件(您的fd所指的文件),它将允许操作系统自动closures文件描述符 。 当你编写任何脚本和multithreading编程环境时,这是更有用的。