gpt4 book ai didi

c - 如何枚举文件描述符? ( fork 后关闭它们)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:05 24 4
gpt4 key购买 nike

我有一个大程序。它非常喜欢打开文件(与它们一起工作,数量可能很大 - 超过 10k)。在某些时候,我想诞生一个子进程,它将过自己的生活(进程外网络浏览器)。由于其大小(> 10GB 的代码)和第三方(以及插件)依赖性,我无法控制谁以及如何在我的主程序中创建文件。我想要:

  • 默认为 O_CLOEXEC/FD_CLOEXEC。我怀疑没有这种能力。或者
  • 一种枚举所有文件(套接字、管道等)描述符的方法,以便能够在 fork 后关闭它们。感兴趣的操作系统:Mac OS X 和 Linux。

最佳答案

文件描述符都是小的正整数,所以你可以枚举所有的,然后关闭它们。关闭未打开的会导致错误,但您可以忽略它:

#include <sys/resource.h>
struct rlimit lim;
getrlimit(RLIMIT_NOFILE, &lim);
for (int i = 3; i < lim.rlim_cur; i++)
close(i); // close all file descriptors other that stdin/stdout/stderr

关于c - 如何枚举文件描述符? ( fork 后关闭它们),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23033232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com