问题标签 [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.
c - C 中是否有用于读/写系统调用的标准输入/输出宏?
我所有的搜索都没有返回任何结果,我发现没有任何宏可用作标准输入和输出的读/写系统调用的文件描述符而不是 0(stdout)和 1(stdin),这很奇怪。
我想念他们还是他们真的不存在?
unix - 在不同进程之间传递文件描述符的可移植方式
在大多数 UNIX 系统上,通过 fork() 可以轻松地为子/父进程在进程之间传递打开的文件;但是我需要在孩子已经分叉之后分享一个 fd。
我发现一些网页告诉我 sendmsg() 可能适用于任意进程;但这似乎非常依赖于操作系统并且很复杂。portlisten似乎是我能找到的最好的例子,但我更喜欢像 libevent 这样的好的包装库,它隐藏了 kqueue、pool 等的所有魔力。
有谁知道是否有一些图书馆(和便携式方式)可以做到这一点?
linux - 在用户空间模拟文件描述符
我想在用户空间中实现一个类似套接字的对象。有一个重要的要求是它应该是可轮询的(即它的状态应该可以通过 select 或 poll 调用进行查询)。
是否有实现此类对象的平台中立方式?
我知道在 Linux 上有 eventfd 可以满足需求,除了没有办法强制它既不表示 POLLIN 也不表示 POLLOUT。
c - 从C中的文件描述符中检索文件名
是否可以在 C 中获取文件描述符(Linux)的文件名?
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 *,为什么会发生这种情况?
以下是我的系统目前的值:
file - N:1 文件描述符?
是否可以让程序将 N 个文件描述符视为 1 个文件描述符,以便在 N 个文件描述符中的任何一个(即来自 N 个套接字)上接收到的数据将被转发回单个文件描述符上的调用 API,隐藏事实上它实际上可能来自不同的文件描述符?是否也可以类似地抽象写入(但回到正确的第 N 个文件描述符)?
linux - 套接字和文件描述符重用(或缺少)
在下面的服务器代码中调用套接字后,我收到错误“打开的文件太多”。此代码被重复调用,并且仅在 server_SD 获得值 1022 之后才发生。所以我假设我达到了“ulimit -n”所禁止的 1024 的限制。我不明白的是我正在关闭套接字,这应该使 fd 可重用,但这似乎没有发生。
注意:使用 linux,是的,客户端也关闭了,不,我不是 root 用户,所以移动限制不是一种选择,我一次最多应该打开 20 个(左右)套接字。在我的程序的整个生命周期中,我希望打开和关闭接近 1000000 个套接字(因此需要非常强大的重用)。
有谁知道如何保证关闭和可重用性?
谢谢。
unix - 如何查看像“lsof -l”这样的文件句柄?
我做了命令(source):
如何查看文件句柄,例如 with lsof -l
?
linux - 检查 Linux 中给定进程的开放 FD 限制
我最近有一个 Linux 进程“泄露”了文件描述符:它打开了它们,但没有正确关闭其中的一些。
如果我对此进行了监控,我可以提前知道该过程已达到极限。
是否有一种不错的 Bash 或 Python 方法来检查 Ubuntu Linux 系统中给定进程的 FD 使用率?
编辑:
我现在知道如何检查有多少打开的文件描述符;我只需要知道一个进程允许多少个文件描述符。某些系统(如 Amazon EC2)没有该/proc/pid/limits
文件。
apache - 套接字:打开的文件太多 (24) apache bench lighttpd
当我开始 Apache Bench 测试时:
ab -n 10000 -c 1300 http://domain.com/test.php
我得到错误:
套接字:打开的文件太多 (24)
当我更改为“-c 1000”时,它工作正常。
因为我可以有超过 1000 个并发用户,所以我想修复套接字打开文件过多的问题或增加参数。如何做到这一点,在哪里?
我在 centos 5 上使用 lighttpd。