int main()
{
int err1, err2;
struct rlimit rlim;
err = getrlimit(RLIMIT_NOFILE, &rlim);
printf("max_fds: %d\n", rlim.rlim_max); // 4096
err1 = dup2(1, 1023); // OK
err2 = dup2(2, 4090); // error: EBADF
return 0;
}
像上面的代码一样,我使用 getrlimit 来获取每个进程的最大打开文件数,并打印 4096。但是,当我将大于 1023 的 newfd 传递到 dup2() 时,它总是返回错误 EBADF。为什么?