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文件操作接口 的相关文章

  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何在C(Linux utf8终端)中打印“盒子抽屉”Unicode字符?

    我正在尝试显示 方框图范围 2500 257F 中的 Unicode 字符 它应该是标准 utf8 Unicode 标准 版本 6 2 我根本做不到 我首先尝试使用旧的 ASCII 字符 但 Linux 终端以 utf8 显示 并且没有显示
  • Vagrant 遇到问题 - “404 - 未找到”

    我正在尝试使用 Vagrant 制作一个 LAMP 盒子 有人告诉我它使用起来非常简单 我对网络和虚拟机完全陌生 对 Linux Ubuntu 的经验也很少 我目前已尝试按照官方文档页面上的教程进行操作 http docs vagrantu
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 为什么 Linux 原始套接字的 RX 环大小限制为 4GB?

    背景 我试图mmap 我的原始套接字的 RX 环形缓冲区64 bitLinux 应用程序 我的环由 4096 个块组成 每个块大小为 1MB 总共 4GB 请注意 每个 1MB 块中可以有许多帧 如果您好奇 请参阅此文档了解背景信息 htt
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh

随机推荐

  • 天才少年稚晖君首秀,官宣智元人形机器人!小米最强铁蛋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