news 2026/10/7 8:40:13

Linux文件描述符(1)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux文件描述符(1)

文件描述符基础

  • Linux启动每个进程自动打开三个标准IO:
    • 描述符0,stdin_fileon,标准输入
    • 描述符1,stdout_fileon,标准输出
    • 描述符2,stderr_fileon,标准错误
  • 文件描述声明周期
    • 创建:系统调用open(),socket(),pipe(),dup()等。
    • 使用:使用read(),write(),lseek(),ioctl()操作
    • 关闭:使用close()释放资源
  • 文件描述符与文件表与inode关系
    • 多个fd可以指向同一个文件表项
    • 多个文件表项可以指向同一个inode(磁盘元数据:文件大小,权限,数据块指针)

系统调用介绍

open()打开或创建文件,返回最小可以fd
close()关闭fd,释放资源
dup(fd)复制fd,返回最小可用新fd
dup2(oldfd,newfd)将oldfd复制到newfd

c语言代码

#include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <stdlib.h> #include <string.h> void show_fds(const char* msg) { printf("\n--- %s ---\n", msg); system("ls -l /proc/self/fd/"); } int main() { int fd1, fd2; // 显示初始文件描述符(应包含 0,1,2) show_fds("初始状态"); // 打开一个新文件,获取新的文件描述符 fd1 = open("testfile.txt", O_CREAT | O_RDWR | O_TRUNC, 0644); if (fd1 == -1) { perror("open"); exit(1); } show_fds("打开 testfile.txt 后"); // 使用 dup 复制文件描述符 fd2 = dup(fd1); if (fd2 == -1) { perror("dup"); close(fd1); exit(1); } show_fds("dup(fd1) 后"); // 向两个 fd 写入数据(应写入同一文件) write(fd1, "Hello from fd1\n", 16); write(fd2, "Hello from fd2\n", 16); // 关闭 fd1,fd2 仍应有效 close(fd1); show_fds("关闭 fd1 后"); // 使用 dup2 将 fd2 重定向到 stdout (1) dup2(fd2, STDOUT_FILENO); printf("这条消息会写入 testfile.txt!\n"); // 因为 stdout 已重定向 // 恢复 stdout?这里不恢复,直接关闭 close(fd2); show_fds("全部关闭后"); // 验证文件内容 printf("\n文件 testfile.txt 内容:\n"); system("cat testfile.txt"); // 清理 unlink("testfile.txt"); return 0; }

实验结果

编译运行结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 16:08:45

云服务器邂逅英伟达B200:AI算力革命的黄金搭档

云服务器邂逅英伟达B200&#xff1a;AI算力革命的黄金搭档在数字经济加速渗透的今天&#xff0c;云服务器与AI芯片的深度融合正在重塑产业格局。英伟达B200 GPU的横空出世&#xff0c;不仅以其4PetaFLOPS的AI算力刷新行业纪录&#xff0c;更通过与云服务器的协同效应&#xff0…

作者头像 李华
网站建设 2026/10/6 18:46:16

Qwen3-14B在编程与数学推理中的表现评测

Qwen3-14B在编程与数学推理中的表现评测在当前企业智能化转型的浪潮中&#xff0c;一个现实问题日益凸显&#xff1a;我们既需要强大智能来处理复杂任务&#xff0c;又难以承受千亿参数大模型带来的高昂部署成本。尤其在代码生成、数学解题这类对精度要求极高的场景下&#xff…

作者头像 李华
网站建设 2026/10/6 12:51:33

AutoGPT在非营利组织运营管理中的价值体现

AutoGPT在非营利组织运营管理中的价值体现 在一家仅有三名全职员工的环保公益组织里&#xff0c;如何用不到一周的时间完成一场覆盖全国十城的线上募捐活动策划&#xff1f;传统流程中&#xff0c;这需要协调调研、文案、设计、传播多个环节&#xff0c;耗时至少两周以上。但如…

作者头像 李华
网站建设 2026/10/6 11:11:03

行为学实验室整体解决方案 动物行为学整体解决方案

动物行为实验站&#xff0c;是指通过对动物行为的视频、光电和生物电等信号的采集&#xff0c;并结合计算机图像处理、点阵分析和生物电信号分析技术&#xff0c;提取动物行为的轨迹并据此计算各种行为学指标的软硬件系统。,动物行为实验站是一个综合性的分析系统&#xff0c;包…

作者头像 李华