当前位置: 首页 > news >正文

网站开发人员介绍网络营销研究现状文献综述

网站开发人员介绍,网络营销研究现状文献综述,国外网站dns改成什么快,北京知名广告公司有哪些文章目录Linux 文件操作详解:结构、系统调用、权限与实践一、为什么说“一切皆文件”二、Linux 文件系统结构详解三、文件描述符(File Descriptor)什么是文件描述符?多个 fd 可指向同一文件?四、两种文件操作方式对比五…

文章目录

  • Linux 文件操作详解:结构、系统调用、权限与实践
    • 一、为什么说“一切皆文件”
    • 二、Linux 文件系统结构详解
    • 三、文件描述符(File Descriptor)
      • 什么是文件描述符?
      • 多个 fd 可指向同一文件?
    • 四、两种文件操作方式对比
    • 五、核心系统调用详解(附实战)
      • 1. `open` 打开文件
      • 2. `write` 写入文件
      • 3. `read` 读取文件
      • 4. `close` 关闭文件
      • 5. `lseek` 移动文件指针
      • 6. `ioctl` 设备控制
    • 六、实战代码示例
      • 文件复制程序(底层 API)
    • 七、性能分析:time 命令
    • 八、总结与建议
    • 拓展阅读

Linux 文件操作详解:结构、系统调用、权限与实践

关键词: Linux 文件结构、文件描述符、系统调用、read/write、open/close、权限控制、实战代码


一、为什么说“一切皆文件”

Linux 系统将万物抽象为文件:

  • 常规文件(普通文本、二进制)
  • 目录(实际上是一个特殊的文件)
  • 字符设备与块设备(如串口、硬盘)
  • 网络连接(socket)
  • 虚拟文件(如 /proc/cpuinfo

这种设计让系统 I/O 操作接口极其统一,极大提升了系统的灵活性和可扩展性。


二、Linux 文件系统结构详解

目录功能说明
/根目录,所有文件系统的起点
/root超级用户的主目录
/bin二进制可执行程序,系统启动与常用命令
/boot启动相关文件,如内核镜像
/dev设备文件(如 /dev/sda 硬盘)
/etc系统配置文件
/home普通用户的主目录
/lib系统核心共享库
/usr用户程序资源(常被挂载为只读)
/var日志、缓存等可变数据
/tmp临时文件存储
/media挂载的 U 盘、光盘等
/proc虚拟文件系统,内核状态如进程信息

⚠️ /dev/proc/sys 等目录是 Linux 与硬件或内核交互的核心。


三、文件描述符(File Descriptor)

什么是文件描述符?

Linux 使用整数 fd(File Descriptor)标识每一个打开的文件资源:

  • 0:标准输入(stdin)
  • 1:标准输出(stdout)
  • 2:标准错误(stderr)

每当你调用 open() 打开一个文件时,系统都会返回一个新的最小未使用的文件描述符。

多个 fd 可指向同一文件?

是的。例如:

int fd1 = open("file.txt", O_RDONLY);
int fd2 = dup(fd1);  // 复制 fd1,两个都指向同一个文件

四、两种文件操作方式对比

操作方式示例函数特点说明
底层系统调用open, read, write, close精准控制、效率高、无缓冲
标准 I/O 函数fopen, fread, fprintf使用方便、有缓冲区

系统调用更适合底层开发(如驱动、内核模块),标准 I/O 适合一般应用程序。


五、核心系统调用详解(附实战)

1. open 打开文件

int open(const char *pathname, int flags, mode_t mode);

常用标志位:

  • O_RDONLY, O_WRONLY, O_RDWR
  • O_CREAT:文件不存在则创建(需提供权限)
  • O_TRUNC:清空已有内容
  • O_APPEND:追加模式
  • O_EXCL:配合 O_CREAT,文件存在则报错

权限常量:

  • S_IRUSR:所有者读权限
  • S_IWUSR:所有者写权限
  • S_IRWXU:所有者读写执行权限(如 0700

示例:

int fd = open("data.txt", O_RDWR | O_CREAT, 0644);

2. write 写入文件

ssize_t write(int fd, const void *buf, size_t count);
  • 成功返回写入字节数,失败返回 -1。
  • 从当前文件指针开始写入。

示例:

write(fd, "Hello\n", 6);

3. read 读取文件

ssize_t read(int fd, void *buf, size_t count);
  • 返回值:

    • 0:读取的字节数

    • =0:文件结束
    • <0:读取出错

示例:

char buf[128];
int len = read(fd, buf, sizeof(buf));

4. close 关闭文件

int close(int fd);
  • 成功返回 0,失败返回 -1。
  • 释放资源,fd 变为无效。

5. lseek 移动文件指针

off_t lseek(int fd, off_t offset, int whence);
  • SEEK_SET:相对于文件头
  • SEEK_CUR:相对于当前位置
  • SEEK_END:相对于文件尾部

应用:

lseek(fd, 100, SEEK_SET); // 跳到偏移 100

6. ioctl 设备控制

int ioctl(int fd, int cmd, ...);
  • 专用于控制设备行为
  • 不同设备支持不同的 cmd
  • 常用于串口、网络驱动、图形接口等底层控制

六、实战代码示例

文件复制程序(底层 API)

int fd_in = open("source.txt", O_RDONLY);
int fd_out = open("dest.txt", O_CREAT | O_WRONLY, 0644);
char buf[1024];
int len;while ((len = read(fd_in, buf, sizeof(buf))) > 0) {write(fd_out, buf, len);
}close(fd_in);
close(fd_out);

七、性能分析:time 命令

time ./copy

输出说明:

  • real:总执行时间
  • user:用户空间耗时
  • sys:系统调用耗时

I/O 密集型程序,sys 会占比较高。


八、总结与建议

操作场景建议
open精细控制文件打开方式
read/write控制读取/写入字节精度
lseek随机读写或偏移操作
ioctl驱动开发与设备控制
fopen/fread高级抽象,适合应用层

技巧建议:

  • 所有 open() 后的 fd 必须在适当时机 close()
  • 处理文件写入建议加 O_APPEND 防止并发写覆盖。
  • 出错检查别忘记使用 strerror(errno) 获取具体错误信息。

拓展阅读

  • dup/dup2:复制文件描述符
  • poll/select:多路复用
  • mmap:内存映射文件
  • /proc 虚拟文件系统
http://www.dtcms.com/a/540189.html

相关文章:

  • html5制作网站一个网站建立团队大概要多少钱
  • AceContainer类中用于初始化任务执行系统的核心方法--AceContainer::InitializeTask
  • Ubuntu部署 Kubernetes1.23
  • 悟空 AI CRM 的回访功能:深化客户关系,驱动业务增长
  • Qt的.pro文件中INSTALLS的作用和用法
  • 我的项目该选LoRa还是RF超短波全数字加密传输?
  • vue3 实现记事本手机版01
  • 03_全连接神经网络
  • 生成式AI重塑教学生态:理论基础、核心特征与伦理边界
  • html5手机网站调用微信分享wordpress缩略图加载慢
  • 动环监控:数据中心机房的“智慧守护者”
  • 5.6对象
  • 生命线与黑箱:LIME和Anchor作为两种事后可解释性分析
  • VMware安装配置CentOS 7
  • 链表算法题
  • 织梦制作wap网站高端网站开发建设
  • 网站建设公司销售经理职责全网最大的精品网站
  • 怎么做公司网站推广cms网站开发教程
  • 解决 OpenSSL 3.6.0 在 macOS 上 Conan 构建失败的链接错误
  • metaRTC7 mac/ios编程指南
  • Go语言-->Goroutine 详细解释
  • 船舶终端数据采集与监管平台一体化方案
  • 2025年10月28日Github流行趋势
  • 《红色脉络:一部PLMN在中国的演进史诗 (1G-6G)》 第14篇 | 6G畅想:通感一体、AI内生——下一代网络的愿景与挑战
  • 「Java EE开发指南」如何用MyEclipse设置Java项目依赖项属性?
  • 输电线路防外破在线监测装置是什么
  • MTK5G旗舰系列——天玑9500/9400/9300/9200/9000在AI和处理器性能、DDR频率及UFS的深度对比分析
  • 平板做网站服务器wordpress在线直播插件
  • 前端Jquery,后端Java实现预览Word、Excel、PPT,pdf等文档
  • 华为910B服务器(搭载昇腾Ascend 910B AI 芯片的AI服务器查看服务器终端信息