什么是c++ (std::ofstream) 的等效物:
int fd = open(fn,O_WRONLY|O_NDELAY|O_APPEND|O_CREAT|O_CLOEXEC,0600);
我想要使用这个应用程序,它只能在较新的Linux版本上运行,因此可移植性不是问题。
很可能没有可移植的方法来实现这一点。至少有两个选项。
有许多“附加文件描述符”,“从fstream获取文件描述符”等示例。如果您能找到一个有效的示例,那么就可以完成所有设置。
如果您可以执行第一个操作,则可以在该文件上执行 fcntl
操作。
/* not checking return values since I am lazy; *you* should check them */
flags = fcntl(fd, F_GETFD);
flags |= FD_CLOEXEC;
fcntl(fd, F_SETFD, flags)
如果你能做到第二个选项,你可以通过open
获取你的描述符并将其附加。
FD_CLOEXEC
这种方法不太干净(但更有可能起作用)。打开所有你不想让子进程继承的fstreams。前往/proc/self/fd
。对于每个fd,设置FC_CLOEXEC标志。