LinuxC文件操作接口

2023-11-02

LinuxC文件操作接口

创建与删除

  1. 创建文件:
    • FILE *fopen( const char *filename, const char *mode );
    • int open(const char *pathname, int flags, mode_t mode);
  2. 删除文件和空目录:int remove(const char *filename);
  3. 创建目录:int mkdir(const char *pathname, mode_t mode);
  4. 删除空目录:int rmdir(const char *pathname);
  5. 创建软链接:int symlink(const char *oldpath, const char *newpath);
  6. 创建硬链接:int link(const char *oldpath, const char *newpath);
  7. 删除链接:int unlink(const char *path);

打开与关闭

  1. 打开文件:
    • FILE *fopen( const char *filename, const char *mode );
    • int open(const char *pathname, int flags, mode_t mode);
  2. 关闭文件:
    • int fclose(FILE *stream);
    • int close(int fd);
  3. 打开目录:DIR *opendir(const char *name);
  4. 关闭目录:int closedir(DIR *dirp);

读取与写入

  1. 读取数据:
    • size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
    • ssize_t read(int fd, void *buf, size_t count);
  2. 写入数据:
    • size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
    • ssize_t write(int fd, const void *buf, size_t count);
  3. 偏移量
    • 设定偏移量:int fseek(FILE *stream, long offset, int origin);
    • 获取偏移量:long ftell(FILE *stream);
    • 移动偏移量到文件头:void rewind(FILE *stream);
    • 是否到达文件尾:int feof(FILE *stream);
    • 设定偏移量:int fgetpos(FILE *stream, fpos_t *pos);
    • 获取偏移量:int fsetpos(FILE *stream, const fpos_t *pos)
  4. 读取一个字符
    int fgetc(FILE *stream);
  5. 写入一个字符
    int fputc(int c, FILE *stream);
  6. 读取一串字符串
    char *fgets(char *str, int num, FILE *stream);
  7. 写入一串字符串
    int fputs(const char *str, FILE *stream);
  8. 格式化写入字符串
    int fprintf(FILE *stream, const char *format, …);
  9. 格式化读取数据
    int fscanf(FILE *stream, const char *format, …);
  10. 读取目录内容:struct dirent *readdir(DIR *dirp);
  11. 读取链接内容:ssize_t readlink(const char *pathname, char *buf, size_t bufsiz);

设置与获取参数

  1. 重命名文件:int rename(const char *old_filename, const char *new_filename);
  2. 修改文件权限:int chmod(const char *path, mode_t mode);
  3. 修改文件所有者和所属组:int chown(const char *path, uid_t owner, gid_t group);
  4. 设置创建新文件时的权限掩码:mode_t umask(mode_t mask);
  5. 修改文件访问时间和修改时间:int utime(const char *filename, const struct utimbuf *times);
  6. 获取文件状态:int stat(const char *path, struct stat *buf);
  7. 获取打开文件的状态:int fstat(int fd, struct stat *buf);
  8. 获取符号链接文件的状态:int lstat(const char *path, struct stat *buf);

其它

  1. 清空输入缓冲区或将输出缓冲区的数据输出到设备上:
    int fflush(FILE *stream);
  2. 设置/获取文件的属性:
    int fcntl(int fd, int cmd, …);
  3. 文件流转换为文件描述符:int fileno(FILE *stream);
  4. 文件描述符转换为文件流:FILE *fdopen(int fd, const char *mode);

监听文件操作

inotify是Linux内核提供的一种文件监控机制,能够实时监控文件系统中指定目录下的文件变化。使用inotify可以监测到文件以及目录的创建、删除、修改等操作,并及时通知相应的应用程序进行处理。

  1. 创建一个新的inotify实例:int inotify_init(void);
  2. 添加一个被监视的目录或文件:int inotify_add_watch(int fd, const char *pathname, uint32_t mask);
  3. 移除一个被监视的目录或文件:int inotify_rm_watch(int fd, int wd);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LinuxC文件操作接口 的相关文章

  • 使用 cmake 和 opencv 对符号“gzclose”的未定义引用[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我尝试构建该项目 doppia https bitbucket org rodrigob doppia 但发生链接错误 我想这是一
  • SSL 和 Tkinter 不存在于 Python 3.5.2、Debian Linux 的源代码构建中

    我刚刚将 Python 3 5 2 下载到我的 Debian 机器上并使用以下命令构建它 configure make make test sudo make install 一切正常 但在make test输出中 它显示安装程序由于未安装
  • 将尾部输出重定向到程序中

    我想使用 tail 作为标准输入向程序发送文本文件中的最新行 首先 我向程序回显一些每次都相同的输入 然后从输入文件发送尾部输入 该输入文件应首先通过 sed 处理 以下是我期望工作的命令行 但是当程序运行时 它只接收回显输入 而不接收尾部
  • Linux 缓冲区溢出环境变量

    我一直在审查不同类型的缓冲区溢出 并遇到了一个我不记得为什么会发生的问题 下面的代码是我尝试执行缓冲区溢出的程序 include
  • Kubernetes Pod 已终止 - 退出代码 137

    我需要一些关于 k8s 1 14 和在其上运行 gitlab 管道所面临的问题的建议 许多作业都会抛出退出代码 137 错误 我发现这意味着容器突然终止 集群信息 库伯内特版本 1 14 使用的云 AWS EKS 节点 C5 4xLarge
  • 如何获取uinput创建的设备的名称(路径)

    我已经成功设置了一个小程序来创建uinput questions tagged uinput我计划使用它来自动测试接收键盘输入事件的应用程序 我已关注both http thiemonge org getting started with
  • 用于列出用户和组的 Python 脚本

    我正在尝试编写一个脚本 在自己的行上输出每个用户及其组 如下所示 user1 group1 user2 group1 user3 group2 user10 group6 etc 我正在为此用 python 编写一个脚本 但想知道如何做到这
  • 在ubuntu 18.04上安装python 2.7

    有没有办法在 Ubuntu 18 04 上安装 Python 2 7 我尝试了这个命令 但它不起作用 sudo apt install python minimal 有没有办法手动安装 我尝试使用 python 2 7 作为不支持 pyth
  • Node exec 无权执行脚本

    直到最近 它都运行良好 但是当我今天尝试使用它时 它无法正常运行 它返回以下错误 错误 命令失败 bin sh c home pi RPi Computer Power RPi Server routes scripts hash js 1
  • 更改 Amazon RDS MYSQL Linux 服务器的 innodb_log_file_size 变量值

    我们正在使用 Amazon RDS linux 服务器作为 MYSQL 更改 my cnf 文件变量值的方法是什么 我正在尝试更改 innodb log file size 变量 您能告诉我哪一个是最好的改变方式吗 所以请帮我解决这个问题
  • Linux 中如何获取内存修改通知

    在Linux的用户空间程序中 我通过从堆中分配来获取一块内存 然后将指针分发给在其他线程中运行的许多其他组件来使用 当上述内存被修改时我想收到通知 我当然可以开发一个自定义用户空间解决方案 供其他组件在尝试修改内存时使用 我的情况的问题是这
  • 在 Linux 中使用仅限 CLI 的工具生成磁盘使用情况图/图表

    在这个问题中 https stackoverflow com questions 32230 tracking down where disk space has gone on linux有人询问如何在 Linux 中显示磁盘使用情况 我
  • 为什么分配大块内存会失败,而重新分配小块内存却不会失败

    这段代码的结果是x指向一块大小为 100GB 的内存 include
  • 从 bash 脚本返回值

    我想创建一个返回值的 Bash 文件 意思是 在脚本 script a bash 中我有一定的计算 脚本 script b bash 会调用它 script a bash return 1 5 script b bash a value s
  • 每个进程是否都存在内核堆栈?

    每个用户空间进程是否都存在一个内核堆栈和一个用户空间堆栈 如果两个堆栈都存在 那么每个用户空间进程应该有 2 个堆栈指针 对吗 在 Linux 中 每个任务 用户空间或内核线程 都有一个 8kb 或 4kb 的内核堆栈 具体取决于内核配置
  • 每当调用 malloc/free 时输出到 stderr

    使用 Linux GCC C 每当调用 malloc free new delete 时 我想向 stderr 记录一些内容 我试图了解库的内存分配 因此我想在运行单元测试时生成此输出 我使用 valgrind 进行内存泄漏检测 但我找不到
  • 如何重命名共享库以避免同名冲突?

    我找到了一个图书馆 libjson http sourceforge net projects libjson 我正在尝试将其构建为共享库并在项目中使用 建造很简单 修复 Makefile 错误后 SHARED 1 make install
  • MYSQL插入GB大小的巨大SQL文件

    我正在尝试创建 Wikipedia DB 副本 大约 50GB 但在处理最大的 SQL 文件时遇到问题 我使用 linux split 实用程序将 GB 大小的文件拆分为 300 MB 的块 例如 split d l 50 enwiki 2
  • Linux 的 gcc __attribute__((selectany)) 替代方案?

    我想知道是否有替代方案 attribute selectany 在Linux中 我想定义这样的东西 char a qwe zxc 并将其包含在许多链接在一起的 c 文件中 因此链接器将看到 a 的多个定义 因此不会链接 我读过这个属性 se
  • 将一个文件写入.c中的另一个文件

    我有一个读取文件然后将其内容复制到另一个文件的代码 我需要使其仅复制每 20 个符号 然后跳过 10 个符号 然后再次跳过 20 个符号 依此类推 我必须使用 lseek 函数 但我不知道如何将所有这些放入循环中来执行此操作 main ar

随机推荐

  • 天才少年稚晖君首秀,官宣智元人形机器人!小米最强铁蛋2比狗更狗

    作者 新智元 编辑 新智元 点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 新智元导读 昨晚同时发生两件大事 雷军携比狗更狗的铁蛋2惊艳登场 稚晖君发出创业首秀预告 人形机器人 远征 A1 3天后亮相 放弃百万年薪从华
  • HTML5 画扇形图

    求评论啊 也写了 一些东西 咋就没人评论一下的呢 HTML5 画扇形图 最近 有个需求 做了个平衡论应用 因为是需要打包成 android 和 ios的 用了phonegap 技术 就是直接开发html5 然后直接生成 ios和androi
  • 图片/视频去水印代码(毕业设计)

    图像去水印 去水印代码代码部分 代码学习交流 请私信 摘要 水印是一种常用的保护技术媒体的版权 同时 为了提高水印的丰满度 攻击技术 如去除标记 也得到了关注 以前的水印去除方法需要获得水印标记用户位置或训练多任务网络以无差别地恢复背景 然
  • 几个常用的操作系统进程调度算法

    一 先来先服务和短作业 进程 优先调度算法 1 先来先服务调度算法 先来先服务 FCFS 调度算法是一种最简单的调度算法 该算法既可用于作业调度 也可用于进程调度 当在作业调度中采用该算法时 每次调度都是从后备作业队列中选择一个或多个最先进
  • 4700万人挤爆BOSS直聘服务器?

    来源于 不会笑青年 前两天 看到朋友圈热传的一张图 在这张图上 我们看到一位自称是BOSS直聘员工表示 金九银十是招聘旺季 2023年9月15日10点15分26秒 在线统计超过4700万人在刷BOSS页面 目前服务器超荷载 正在维护 找工作
  • 堆栈管理器

    转 http blog csdn net vipzjyno1 article details 25423543 public class StackManager Stack 中对应的Activity列表 也可以写做 Stack
  • Shell编程样例一篇

    Shell编程例子 来源 ChinaUnix博客 日期 2007 04 10 00 07 共有0条评论 我要评论 Bash编程实例 一 通过学习如何使用 bash 脚本语言编程 将使 Linux 的日常交互更有趣和有生产力 同时还可以利用那
  • 硬件十万个为什么?

    硬件十万个为什么 微信号 Hardware 10W 功能介绍 热爱技术 乐于分享 1 电源类 1 1 电源基础 各种 地 各种 GND 板载电源设计规范 电源环路稳定性评价方法 深入芯片内部 理解去耦电容的作用 减小DC DC变换器中的接
  • 复杂网络转载重点

    复杂网络是一种理解现实世界复杂系统的抽象模型 它将复杂系统中的实体抽象成节点 将实体之间的关系抽象成连线 虽然数学中的图论也在研究网络 但是现实中的网络会有更多的随机特性 因此 复杂网络 一般更加关注网络的统计特征 定义 在 http wi
  • Yii Framework 开发教程(7) 使用CHtml 创建Form

    在创建Yii 应用的MVC做的View时 可以直接使用HTML语言直接构造页面视图 Yii 也提供了几个帮助 helper 类简化视图编写 例如 要创建一个文本输入域 我们可以调用 CHtml textField 要创建一个下拉列表 则调用
  • vs2013旧账号登录后新账号无法重新登录

    问题如下 We were unable to establish the connection because it is configured for user olduser old com but you attempted to c
  • mac下Android Studio打不开了怎么办?

    描述 就是跳了一下 然后躺平了 解决办法 排查 打开 应用程序 gt 右键android studio gt 显示包内容 gt Contents gt MacOS gt 双击 studio 查看错误 错误可能是各种各样的 但基本都能显示出来
  • 基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及详细文章阅读 1 概述 很多力学 工程等学科中的问题都可以归结为积分方
  • 关于力控7.2的问题及解决方案整理(持续更新)

    建议 如果还没用力控 如果还不确定要不要用力控 一定不要 1 很多BUG 开发不完善 2 功能较为单一 目录 1 专家报表关系数据库表头问题 2 智能单元用多了会变卡 3 连接数据库失败啊 可以看报错哦 4 数据库组态改地址报错 4 网络发
  • 服务器运维常用命令

    一 linux 1 下载文件 wget O filename url 简单输出下载 wget nv O filename url 2 查看文件前几行 head n 20 file txt 3 查看目录下文件夹的大小 du d 1 h 4 c
  • 政务区块链电子证照应用场景

    政务区块链对于电子证照共享的应用场景 区块链电子证照系统场景 所解决的是证照共享的问题 在预防各部门自己的证照被批量的被盗用或被篡改 采用区块链证照模式 将各个部门的证照共享 解决的问题 证件被批量盗取 证件被他方恶意修改 证件共享难 实现
  • Linux power supply framwork & drvs

    转自 http www wowotech net pm subsystem psy class overview html 按照自己的习惯改了下排版 博主表打我 0 涉及文件 framwork drivers power power sup
  • macOS如何查看pkg安装包中的内部文件

    目录 写在前面 安装App 使用 pkg 信息面板 脚本查看 写在前面 macOS如何查看 pkg 安装包中的内部文件 我们在整系统的时候 有的时候需要查看 pkg 的内部文件 本文就教一教大家macOS如何查看 pkg 安装包中的内部文件
  • 设置锚点

    导航栏的定位 document scroll function if document scrollTop gt 442 nav css position fixed background ffffff top 0px z index 10
  • LinuxC文件操作接口

    LinuxC文件操作接口 创建与删除 创建文件 FILE fopen const char filename const char mode int open const char pathname int flags mode t mod