问题标签 [file-descriptor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
377 浏览

c - C 中是否有用于读/写系统调用的标准输入/输出宏?

我所有的搜索都没有返回任何结果,我发现没有任何宏可用作标准输入和输出的读/写系统调用的文件描述符而不是 0(stdout)和 1(stdin),这很奇怪。

我想念他们还是他们真的不存在?

0 投票
2 回答
31142 浏览

unix - 在不同进程之间传递文件描述符的可移植方式

在大多数 UNIX 系统上,通过 fork() 可以轻松地为子/父进程在进程之间传递打开的文件;但是我需要在孩子已经分叉之后分享一个 fd。

我发现一些网页告诉我 sendmsg() 可能适用于任意进程;但这似乎非常依赖于操作系统并且很复杂。portlisten似乎是我能找到的最好的例子,但我更喜欢像 libevent 这样的好的包装库,它隐藏了 kqueue、pool 等的所有魔力。

有谁知道是否有一些图书馆(和便携式方式)可以做到这一点?

0 投票
4 回答
2387 浏览

linux - 在用户空间模拟文件描述符

我想在用户空间中实现一个类似套接字的对象。有一个重要的要求是它应该是可轮询的(即它的状态应该可以通过 select 或 poll 调用进行查询)。

是否有实现此类对象的平台中立方式?

我知道在 Linux 上有 eventfd 可以满足需求,除了没有办法强制它既不表示 POLLIN 也不表示 POLLOUT。

0 投票
8 回答
123083 浏览

c - 从C中的文件描述符中检索文件名

是否可以在 C 中获取文件描述符(Linux)的文件名?

0 投票
1 回答
1501 浏览

linux - 在 Linux 中增加文件描述符的数量

我有一个长时间运行的进程来监视系统并打印定期日志。如果我让它运行超过 10-15 分钟,它会退出并显示一条消息:打开的文件太多。

该程序使用实时 timer_create() 和 timer_settime() 设置,每 2 秒引发一次 SIGUSR1。在处理程序中,子进程中有一个 fork()-exec() 父进程和后续 mmap() 以及 /proc/acpi/battery/state 和 /sys/devices/system/cpu/cpu0 上的流操作有一个等待/cpufreq/scaling_cur_freq 和 scaling_setspeed 文件。我已经注意在周期性信号处理程序和所有其他地方关闭流 FILE * 指针。我还确保了所有映射文件的 munmap() 。

我怎样才能解决这个问题?我应该增加允许的最大文件描述符还是应该增加 ulimit -aS 显示的最大打开文件数?如果我使用 fclose() 关闭所有 FILE *,为什么会发生这种情况?

以下是我的系统目前的值:

0 投票
1 回答
124 浏览

file - N:1 文件描述符?

是否可以让程序将 N 个文件描述符视为 1 个文件描述符,以便在 N 个文件描述符中的任何一个(即来自 N 个套接字)上接收到的数据将被转发回单个文件描述符上的调用 API,隐藏事实上它实际上可能来自不同的文件描述符?是否也可以类似地抽象写入(但回到正确的第 N 个文件描述符)?

0 投票
6 回答
7565 浏览

linux - 套接字和文件描述符重用(或缺少)

在下面的服务器代码中调用套接字后,我收到错误“打开的文件太多”。此代码被重复调用,并且仅在 server_SD 获得值 1022 之后才发生。所以我假设我达到了“ulimit -n”所禁止的 1024 的限制。我不明白的是我正在关闭套接字,这应该使 fd 可重用,但这似乎没有发生。

注意:使用 linux,是的,客户端也关闭了,不,我不是 root 用户,所以移动限制不是一种选择,我一次最多应该打开 20 个(左右)套接字。在我的程序的整个生命周期中,我希望打开和关闭接近 1000000 个套接字(因此需要非常强大的重用)。

有谁知道如何保证关闭和可重用性?

谢谢。

0 投票
2 回答
6691 浏览

unix - 如何查看像“lsof -l”这样的文件句柄?

我做了命令(source):

如何查看文件句柄,例如 with lsof -l

0 投票
7 回答
103131 浏览

linux - 检查 Linux 中给定进程的开放 FD 限制

我最近有一个 Linux 进程“泄露”了文件描述符:它打开了它们,但没有正确关闭其中的一些。

如果我对此进行了监控,我可以提前知道该过程已达到极限。

是否有一种不错的 Bash 或 Python 方法来检查 Ubuntu Linux 系统中给定进程的 FD 使用率?

编辑:

我现在知道如何检查有多少打开的文件描述符;我只需要知道一个进程允许多少个文件描述符。某些系统(如 Amazon EC2)没有该/proc/pid/limits文件。

0 投票
3 回答
60636 浏览

apache - 套接字:打开的文件太多 (24) apache bench lighttpd

当我开始 Apache Bench 测试时:

ab -n 10000 -c 1300 http://domain.com/test.php

我得到错误:

套接字:打开的文件太多 (24)

当我更改为“-c 1000”时,它工作正常。

因为我可以有超过 1000 个并发用户,所以我想修复套接字打开文件过多的问题或增加参数。如何做到这一点,在哪里?

我在 centos 5 上使用 lighttpd。