一、系统编程常用api

news2024/11/15 7:02:43

一、文件io

文件io是linux系统提供的接口,针对文件和磁盘进行操作,不带缓存机制

标准io是c语言函数库里的标准io模型,在stdio.h中定义,通过缓冲区操作文件,带有缓存机制

标准 IO 和文件 IO 的区别如下图所示:

文件 IO 是直接调用内核提供的系统调用函数,头文件是 unistd.h,标准 IO 是间接调用系统调用函数,

头文件是 stdio.h,文件 IO 是依赖于 Linux 操作系统的,标准 IO 是不依赖操作系统的,所以在任何的操作系 统下,使用标准 IO,也就是 C 库函数操作文件的方法都是相同的。

的。在 Linux 系统中,所有打开的文件都有一个对 应的文件描述符。文件描述符的本质是一个非负整数,当我们打开一个文件时,系统会给我们分配一个文 件描述符。

一个进程启动时候,都会打开3个文件:标准输入、标准输出和标准出错处理

    • open打开文件

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

pathname:路径和文件名

flags:打开方式

O_CREAT 要打开的文件名不存在时自动创建改文件。 O_EXCL 要和 O_CREAT 一起使用才能生效,如果文件存在则 open()调用失败。 O_RDONLY 只读模式打开文件。 O_WRONLY 只写模式打开文件。 O_RDWR 可读可写模式打开文件。

mode:权限掩码,对不同用户和组设置可执行,读,写权限,使用八进制数表示,此参 数可不写

2、close关闭文件

int close(int fd)

fd:文件描述符

3、read读取文件

ssize_t read(int fd, void *buf, size_t count)

fd:要读的文件描述符

buf:存放读到的内容

count:每次读取的字节数

返回值大于 0,表示读取到的字

4、write写文件

ssize_t write(int fd, const void *buf, size_t count);

fd:文件描述符

buf:要写入的数据

count:每次写入的个数

大于或等于 0 表示执行成功,返回写入的字节数

5、lseek文件偏移

off_t lseek(int fd, off_t offset, int whence
)

fd:文件描述符

offset:偏移量

whence:当前位置

SEEK_SET:相对于文件开头 SEEK_CUR:相对于当前的文件读写指针位置 SEEK_END:相对于文件末尾

举个例子  把文件位置指针设置为 100 lseek(fd,100,SEEK_SET);  把文件位置设置成文件末尾 lseek(fd,0,SEEK_END);  确定当前的文件位置 lseek(fd,0,SEEK_CUR);

二、目录io

    • mkdir创建文件

int mkdir(const char *pathname, mode_t mode)

pathname:路径和文件名

mode:权限掩码,对不同用户和组设置可执行,读,写权限,使用八进制数表示,此参数 可不写。

2、 opendir/closedir打开/关闭

DIR *opendir(const char *name);

name:路径名字

成功返回打开的目录流,失败返回 NULL。 功能 打开指定的目录,并返回 DIR*形态的目录流

int closedir(DIR *dirp

dirp:要关闭的目录流指针

3、readdir读取目录

struct dirent *readdir(DIR *dirp);
int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result)

dirp:要读取的目录流指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/197400.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSD(固态) VS HDD(机械),购买指南

大多数人买电脑的时候纠结买固态硬盘(SSD)还是机械硬盘(HDD)。哪个是最佳选择呢,是固态硬盘还是机械硬盘呢?这个问题没有直接的答案,每个购买者有不同的需求, 需要根据需求做选择。这些需求像是性能、和预算…

DS18B20测量温度液晶1602显示

DS18B20温度传感器简介DS18B20是一种数字温度传感器。它输出的是数字信号,同时具有体积小,硬件资源耗费少,抗干扰能力强,精度高等特点。DS18B20温度传感器特点1、单线接口:DS18B20仅需一条线可实现与微处理器双向通信。…

泰山服务器板载 HNS3 网卡绑核无法充分利用 CPU 的解决思路

文章目录前言解决方案排查过程应用程序运行环境与方式检查是否存在 irqbalance 进程检查中断号对应的 CPU 亲和尝试其他绑核方式尝试调整队列数量:核心数量为 2:1前言 前段时间在泰山服务器上进行性能测试,预期是应用进程能够占满机器大部分 CPU。但实际上&#xf…

书城第二阶段——用户注册和登陆

目录0.0 JavaEE 项目的三层架构0.1 项目阶段二:用户注册和登陆的实现。1、先创建书城需要的数据库和表。2、编写数据库表对应的JavaBean对象。3、编写工具类 JdbcUtils3.1、导入需要的 jar 包(数据库和连接池需要):3.2、在 src 源…

钉钉一键登录第三方网站

钉钉一键登录第三方网站序钉钉开发者后台H5微应用应用代码开发登录页面login.html登录实现LoginController.javapom.xml增加一键登录效果展示序 企业内部系统已经做过了钉钉扫码登录,现在需要添加钉钉一键登录第三方网站功能,这里主要记录一键登录整个实…

物联网终端设备的工作原理和功能讲解

物联网终端设备是实现数据采集和数据传输的设备,它连接了传感网络层和传输网络层,起到了数据采集、数据处理、数据加密和传输的功能。 物联网终端设备由传感器、外部传感接口、CPU和外部通讯组成,工作原理是通过外部传感接口与传感设备连接&a…

和平精英军需精打细算天花板,330拿下一整套军需

和平精英军需精打细算天花板,330拿下一整套军需! #和平精英 #这游戏不花钱 #游戏凡星计划 军需精打细算天花板,一个月时间花 110 块获得 436 个军需币。拿个新军需的副套问题不大。要知道和平小店的暖弄大礼包, 100 左右&#…

一次在 classpath 使用通配符导致的偶发问题排查与建议

说起 Classpath,使用 Java 的同学应该都不会陌生。不过,目前的项目基本都会使用 Maven 等构建工具管理,开发过程中也会使用高度智能化的 IDE,在日常使用中直接涉及 Classpath 操作可能不多。前段时间遇到一个跟 Classpath 相关的偶…

【My Electronic Notes系列——触发器】

目录 序言: 🏆🏆人生在世,成功并非易事,他需要破茧而出的决心,他需要永不放弃的信念,他需要水滴石穿的坚持,他需要自强不息的勇气,他需要无畏无惧的凛然。要想成功&…

【栈】单调栈详情介绍及其运用

单调栈单调栈的概述(Overview)何时使用单调栈模拟单调递增栈单调栈的运用(算法练习题)模板【练习一、单调栈】739. 每日温度【练习二、单调栈哈希表】496. 下一个更大元素 I【练习三、单调栈循环数组】503. 下一个更大元素 II【练…

Word处理控件Aspose.Words功能演示:使用 C++ 处理 Word 文档中的目录

Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。 Aspose.words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和…

4EVERLAND IPFS CID部署,一键部署Uniswap

近日,4EVERLAND推出IPFS CID部署,开发者可以复制IPFS CID,一键部署到4EVERLAND。 一键部署,无需通过Github Repo,只需要知道CID即可。一键跨平台部署项目到 Arweave 或 ICP。了解IPFS CID,通过4EVERLAND绑…

漫谈广告机制设计 | 开篇语

很久没有写文章了,oCPC实践录的专栏还没有写完,我就换工作了,去了M公司,做的内容与oCPC不怎么相关,对于其中的问题思考也没有那么多了,好在专栏的核心思想已经基本阐明了。在M公司也已经快两年了&#xff0…

青龙+WxPusher实现资产推送

1.首先注册WXpusher: https://wxpusher.zjiecode.com/admin/login 扫码注册创建应用 确定完就会出现一个token,一定先复制保存起来,因为只显示一次,没存后期就只能重置了。 关闭后,这个页面有二维码和链接&#xff0…

CSS定位详解

文章目录定位为什么要使用定位定位的组成定位模式静态定位:按照标准流特性摆放,没有边偏移相对定位:元素在移动位置的时候,是相对于它原来的位置来说的绝对定位:在移动位置的时候相对与祖先元素固定定位:元…

C语言:指针详解

往期文章 C语言:初识C语言C语言:分支语句和循环语句C语言:函数C语言:数组C语言:操作符详解 目录往期文章前言1. 指针是什么2. 指针和指针类型3. 野指针4. 指针运算4.1 指针-整数4.2 指针-指针4.3 指针的关系运算5. 二…

“小灵通”的风雨往事

最近,有一部叫做《狂飙》的国产电视剧火遍全网,相信大家都看到了。在剧中,出现了一个通信名词,不知道在座各位有没有关注到。没错,这个名词,就是“小灵通”。《狂飙》剧的主角高启强,原本是个卖…

Web3.0 · 基础层技术 · SCQA模型趣谈密码学

【小木箱成长营】密码学系列教程: Web3.0 基础层技术 密码学在移动端应用与实践 一、序言 Hello,我是小木箱,欢迎来到小木箱成长营密码学系列教程,今天将分享 Web3.0 基础层技术 SCQA 模型趣谈密码学。 SCQA 模型趣谈密码学主…

第一章 opencv与python介绍及环境搭建

目录1.python安装2.opencv3.pycharm安装4.conda环境搭建(my)1.python安装 网上教程很多就不写了,推荐使用python3.8.2及以上版本 2.opencv opencv简单介绍:opencv是一个开源的计算机视觉库,可以在windows、MacOS、Linux等操作系统上运行。 …

Day878.count(*)问题 -MySQL实战

count(*)问题 Hi,我是阿昌,今天学习记录的是关于count(*)问题。 在开发系统的时候,可能经常需要计算一个表的行数,比如一个交易系统的所有变更记录总数。 这时候可能会想,一条 select count(*) from t 语句不就解决…