news 2026/6/15 1:55:21

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/6/13 22:34:01

OpenSpec定义AI模型接口标准助力Qwen3-VL-30B集成

OpenSpec定义AI模型接口标准助力Qwen3-VL-30B集成 在当今AI系统日益复杂的背景下&#xff0c;一个尖锐的现实摆在开发者面前&#xff1a;我们拥有越来越强大的模型&#xff0c;却越来越难把它们用起来。 以Qwen3-VL-30B为例——这款300亿参数的视觉语言大模型&#xff0c;能在毫…

作者头像 李华
网站建设 2026/6/15 0:36:08

英伟达B200:AI算力革命的新纪元引擎

英伟达B200&#xff1a;AI算力革命的新纪元引擎在人工智能算力竞赛进入白热化的2024年&#xff0c;英伟达B200 GPU的横空出世&#xff0c;不仅重新定义了数据中心的计算边界&#xff0c;更标志着通用计算架构向智能化跃迁的关键拐点。这款基于Blackwell架构的新一代旗舰产品&am…

作者头像 李华
网站建设 2026/6/12 22:13:46

自动批量混剪视频软件配置流程

这是一款可以自动批量混剪视频的软件&#xff0c;先来看一段通过软件批量增加了动态特效以及边框后的视频效果。 &#x1f4cc; **需要查看完整文档、参数详解与示例配置的朋友&#xff0c;可参考我整理的笔记&#xff1a; ** &#x1f449; xk.xunbk.com 现在各个平台对于视…

作者头像 李华
网站建设 2026/6/14 0:06:41

多系统并行的权限治理难题:如何消除“权限孤岛”与安全风险?

在企业数字化转型浪潮中&#xff0c;数据被视为新的生产资料&#xff0c;其安全与合规性成为企业的生命线。然而&#xff0c;许多企业将安全投入的焦点放在了防火墙、入侵检测、加密技术等“外围防御”上&#xff0c;却往往忽略了内部数据安全的“命门”——权限管理&#xff0…

作者头像 李华