在调用
fork()
时,是否可以将特定文件描述符标记为不可继承或关闭它?不是的。在fork中,所有文件描述符都会被继承。但是,您可以使用fcntl(fd,F_SETFD,FD_CLOEXEC)
将fd设置为在执行时关闭。
open
函数时,通过传递 O_CLOEXEC
标志可以避免使用 fcntl
函数。 - DamonO_CLOEXEC
已经在POSIX 2008中标准化)。 - R.. GitHub STOP HELPING ICEstatic void fd_to_close;
static void closer()
{
close(fd_to_close);
}
pthread_atfork(0, 0, closer);
通常情况下,关闭执行时是期望的行为。
不可能的。默认情况下,子进程会从父进程继承文件表。