文件描述符
文件描述符是一个非负整数,用于标识打开的文件或 I/O 资源。它们在 UNIX/Linux 系统中是有限的,具体范围和最大值依赖于系统的配置和实现。
1. 文件描述符的基本范围
最小值:文件描述符从 0 开始。
-
0 通常表示标准输入(stdin)。
-
1 通常表示标准输出(stdout)。
-
2 通常表示标准错误输出(stderr)。
最大值:系统中可用的文件描述符的最大值通常由系统参数决定。在大多数 Linux 系统中,默认情况下,用户进程可以打开的文件描述符数量限制为 1024,但可以通过命令或配置文件进行修改。
2. 查看和修改文件描述符限制
-
查看当前限制:
使用 ulimit 命令:
ulimit -n
这将显示当前用户可以打开的最大文件描述符数量。
自己试了下:
-
修改限制:
可以通过
ulimit -n [new_limit]
命令在当前会话中临时修改限制,或在配置文件(如 /etc/security/limits.conf)中进行永久性修改。
3. 举一个例子
这个程序不能在Windows系统下运行,_SC_OPEN_MAX 和 sysconf 是 POSIX 标准的一部分,通常在 UNIX/Linux 系统中使用。
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main() {
// 获取当前最大文件描述符限制
long max_fd = sysconf(_SC_OPEN_MAX);
printf("Maximum file descriptors: %ld\n", max_fd);
// 打开文件并获取文件描述符
int fd = open("example.txt", O_RDONLY);
if (fd == -1) {
perror("Error opening file");
return 1;
}
// 使用文件描述符进行操作...
close(fd); // 关闭文件
return 0;
}
输出如下:
分类:
学习中遇到的离散知识点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix