Linux的文件系统编程(1)

news2024/12/26 22:40:56

What makes the desert beautiful is that somewhere it hides a well.

沙漠之所以美丽,是因为在它的某个角落隐藏着一口井.

Linux的文件系统编程(1)

    • 运行过程
    • 框架
    • 标准IO和文件IO
      • 标准IO
      • 文件IO(主要学)
    • open函数
      • 两个参数
      • 三个参数
    • close函数
    • read函数
    • write函数

%d整型输出,%ld长整型输出,

%p 输出变量的内存地址,

%o以八进制数形式输出整数,

%x以十六进制数形式输出整数,

%u以十进制数输出unsigned型数据(无符号数)。

%c用来输出一个字符,

%s用来输出一个字符串,

%f用来输出实数,以小数形式输出,

%e以指数形式输出实数,

%g根据大小自动选f格式或e格式,且不输出无意义的零。

运行过程

1 . 先写一个x.c文件

然后输命令 gcc x.c 就会生成一个a.out文件

然后 ./a.out 来运行 x.c 文件

每改一次内容都要从新输 gcc x.c
在这里插入图片描述
2 . 如果想在交叉编译器上运行

arm-linux-gnueabihf-gcc x.c -o x -static

框架

1 . main的头文件

#include <stdio.h>
#include <stdlib.h>

在这里插入图片描述
2 .

argc 表示参数个数
在这里插入图片描述
argv 表示参数
在这里插入图片描述
argv可输出很多参数
在这里插入图片描述

标准IO和文件IO

标准IO

间接调用"系统调用函数" , 是c库函数

头文件是 “stdio.h”

不依赖于操作系统, 所以所有操作系统的调用库函数操作文件的方法是一样的

文件IO(主要学)

直接调用内核的"系统调用函数"

头文件是 “unistd.h”

依赖于操作系统

open close read write

open函数

用于打开一个文件

相关程序4.c

//头文件
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
  1. O_RDONLY 只读打开
  2. O_RDWR 读写方式打开
  3. O_CREAT 文件不存在则创建
  4. O_APPEND 文件末尾追加
  5. O_TRUNC 清空文件,重新写入
  6. 可读=4
  7. 可写=2
  8. 可执行=1

两个参数

用于打开已经存在的文件

fd = open("./4.txt",O_RDWR)

三个参数

用于打开不知道是否存在的文件

fd = open("./4.txt", O_CREAT | O_RDWR, 0666)

666:表示权限为644 rw- r-- r–

完整程序

在这里插入图片描述

close函数

用于关闭一个文件, 因为fd的数量是1024, 所以调用文件后要关闭文件,释放fd

相关程序5.c

//头文件
#include <unistd.h>

完整程序
在这里插入图片描述

read函数

用于读取一个文件

相关程序6.c, 6.txt

//头文件
#include <unistd.h>

当6.txt刚被创建, 没有内容时, 不会报错, ret<0时, 才会报错
在这里插入图片描述
当6.txt里面写的"hello"时, 虽然要去读32个字节,hello只有5字节, 但是不会报错
在这里插入图片描述
当第一次已经读完了6.txt的内容, 第二次读时, ret就是0
在这里插入图片描述
6.c的代码

#include <stdio.h> //用于main函数
#include <stdlib.h>

#include <sys/types.h> //用于open
#include <sys/stat.h>
#include <fcntl.h>

#include <unistd.h> //用于close,read

int main(int argc, char *argv[])
{
    int fd;                     // fd是文件描述符,如果文件存在,fd=3,如果不存在,fd<0
    char buf[32] = {0};         //定义一个buf来放读出的字符,[32]:有32字节的空间,{0}:已清零
    ssize_t ret;                // read的返回值是ssize_t型

    fd = open("./6.txt", O_CREAT | O_RDWR, 0666); // O_RDWR 读写方式打开, O_CREAT 文件不存在则创建;0666:0表示八进制,666表示权限
    printf("fd is %d\n", fd);

    ret=read(fd,buf,32);         //读fd的32字节放入buf
    printf("buf is %s\n", buf);    //buf表示读的具体的字符
    printf("read is %d\n", ret);   //ret表示读了几个

    // ret = read(fd, buf, 32);    //读fd的32字节放入buf
    // printf("buf is %s\n", buf); // buf表示读的具体的字符
    // printf("read is %d", ret);  // ret表示读了几个

    close(fd);   //关闭
}

write函数

用于写, 如果要写文件, 就要配合O_RDWR使用

相关程序7.c, 7.txt

//头文件
#include <unistd.h>

可直接输出在命令行
在这里插入图片描述
向7.txt里面写hello
在这里插入图片描述
7.c代码

#include <stdio.h> //用于main函数
#include <stdlib.h>

#include <sys/types.h> //用于open
#include <sys/stat.h>
#include <fcntl.h>

#include <unistd.h> //用于close,read,write

int main(int argc, char *argv[])
{
    int fd; // fd是文件描述符,如果文件存在,fd=3,如果不存在,fd<0
    char buf[32] = {0}; //定义一个buf来放读出的字符,[32]:有32字节的空间,{0}:已清零
    

    fd = open("./7.txt", O_CREAT | O_RDWR, 0666); // O_RDWR 读写方式打开, O_CREAT 文件不存在则创建;0666:0表示八进制,666表示权限
    printf("fd is %d\n", fd);

    write(fd, "hello", 5);             //在7.txt里写入hello,5表示字节数,要配合O_RDWR使用
    printf("写好了\n");

    close(fd);         //关闭
}

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

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

相关文章

Python基础语法(二)

Python基础语法&#xff08;二&#xff09; 函数 编程中的函数和数学中的函数有一定的相似之处. 数学上的函数, 比如 y sin x , x 取不同的值, y 就会得到不同的结果. 编程中的函数, 是一段 可以被重复使用的代码片段 . 代码示例: 求数列的和, 不使用函数 # 1. 求 1 - 100 …

树Tree【代码笔记】

树【Tree】 树是n&#xff08;n>0&#xff09;个结点的有限集。当n 0时&#xff0c;称为空树。在任意一棵非空树中应满足&#xff1a; 有且仅有一个特定的称为根的结点。当n>1时&#xff0c;其余节点可分为m&#xff08;m>0&#xff09;个互不相交的有限集T1,T2,……

OpenHarmony#深入浅出学习eTs#(六)编写eTs第一个控件

本项目Gitee仓地址&#xff1a;深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com) 一、控件基本属性 在使用第一个控件前&#xff0c;我们需要了解一些控件都有哪些基础属性&#xff0c;比如说我们在Super Visual中使用过的长宽和字体大小等等&#xff0c;通用属性有以下这…

Retrofit的使用

文章目录Retrofit的使用最好用的网络库: RetrofitRetrofit的基本用法处理复杂接口的地址类型Retrofit构建器的最佳写法Retrofit的使用 最好用的网络库: Retrofit Retrofit是一款由Square公司开发的网络库,但是它和OkHttp定位完全不同,OkHttp的侧重点是底层通信的实现,而Retro…

Java集合类——LinkedList(单链表及双链表)

一&#xff0c;ArrayList的缺陷 1.空间浪费 在之前的博客中&#xff0c;我利用源码详细的讲解了ArrayList这个集合类&#xff08;尤其是扩容机制&#xff09;&#xff0c;可以知道ArrayList的底层主要是一个动态的可变数组&#xff0c;容量满的时候需要进行1.5倍扩容。但是我…

第二十讲:神州路由器静态路由的配置

实验拓扑图如下所示 设备 端口 IP 子网掩码 网关 Router-A G0/0 120.83.200.55 255.255.255.0 无 G0/3 192.168.0.1 255.255.255.0 无 Router-B G0/0 120.83.200.56 255.255.255.0 无 G0/3 192.168.1.1 255.255.255.0 无 PC1 192.168.0.2 255.255.255…

jQuery 的基本使用

1、jQuery 介绍 1.1、JavaScript 库 JavaScript库&#xff1a;即 library&#xff0c;是一个封装好的特定的集合&#xff08;方法和函数&#xff09;。从封装一大堆函数的角度理解库&#xff0c;就是在这个库中&#xff0c;封装了很多预先定义好的函数在里面&#xff0c;比如动…

【C++】const关键字

【C】const关键字 0x1 常量 C定义常量有两种方式 #define 宏常量&#xff1a;#define 常量名 常量值 通常在文件上方定义&#xff0c;表示一个常量宏常量不可以修改 // 宏常量 #define MAX 999int main() {return 0; }const修饰的变量&#xff1a; const 数据类型 常量名 …

docker 安装Es

1、下载镜像文件 docker pull elasticsearch:7.4.2 存储和检索数据 docker pull kibana:7.4.2 可视化检索数据 2、创建实例 1、ElasticSearch mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data echo "http.host: 0.0.0.0" >…

第三十六章 数论——容斥原理

第三十六章 数论——容斥原理一、容斥原理1、定理内容二、代码模板1、问题&#xff08;1&#xff09;如何求出能够被整除的个数&#xff1f;&#xff08;2&#xff09;如何枚举出2n−12^n-12n−1种情况&#xff1f;2、代码实现&#xff1a;一、容斥原理 1、定理内容 我们在高…

开启微信小程序的学习窗口(第一课)

第一个问题 什么是微信小程序 微信小程序&#xff0c;小程序的一种&#xff0c;英文名Wechat Mini Program&#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或搜一下即可打开应用。 全面开放申请后&#xff0…

Educational Codeforces Round 93 (Rated for Div. 2) K. Lonely Numbers

Problem - C - Codeforces 翻译&#xff1a; 给定一个数组&#x1d44e;1&#xff0c;&#x1d44e;2&#xff0c;…&#xff0c;&#x1d44e;&#x1d45b;&#xff0c;由0到9的整数组成。一子数组&#x1d44e;&#x1d459;,&#x1d44e;&#x1d459; 1,&#x1d44e;&…

R实战 | 置换多元方差分析(以PCoA的PERMANOVA分析为例)

adonis-cover置换多元方差分析&#xff08;Permutational multivariate analysis of variance&#xff0c;PERMANOVA&#xff09;&#xff0c;又称非参数多因素方差分析&#xff08;nonparametric multivariate analysis of variance&#xff09;、或者ADONIS分析。它利用距离矩…

第003课 - 分布式基础概念

文章目录 集群、分布式、节点远程调用负载均衡服务注册/发现和注册中心服务熔断和降级API网关我们以前将所有的代码、页面、sql语句,写到一个应用,如果有一个地方有问题,整个就不可用了。 我们可以基于业务边界进行服务微化和拆分。 如果有一个出现了问题,不影响其他服务…

迅为LS2K0500开发板龙芯全国产处理器LoongArch架构核心主板

全国产开发板&#xff1a; 迅为iTOP-LS2K0500开发采用龙芯LS2K0500处理器&#xff0c;基于龙芯自主指令系统&#xff08;LoongArch&#xff09;架构&#xff0c;片内集成64位LA264处理器核、32位DDR3控制器、2DGPU、DVO显示接口、两路PCle2.0、两路SATA2.0、四路USB2.0、一路US…

梯度下降算法、随机梯度下降算法、动量随机梯度下降算法、AdaGrad算法、RMSProp算法、Adam算法详细介绍及其原理详解

相关文章 梯度下降算法、随机梯度下降算法、动量随机梯度下降算法、AdaGrad算法、RMSProp算法、Adam算法详细介绍及其原理详解反向传播算法和计算图详细介绍及其原理详解 文章目录相关文章前言一、回归拟合问题二、损失函数三、梯度下降算法四、随机梯度下降算法五、动量随机梯…

国际山岳日,周大福百年承诺续写永恒美好

纵横古今&#xff0c;俯瞰万里 每一寸绿野都孕育万物生机 每一座山林都彰示生命之本 百周年承诺 守护自然生态 周大福珠宝集团坚守“用真诚让幸福永恒“的企业理念 我们的百周年承诺包括对地球真诚且有效的付出服务 致力守护珍贵的大自然环境&#xff0c;为人类和星球幸福…

吉林优美姿文化:抖音怎么做爆款输出?

要知道&#xff0c;现在自媒体发展的越来越好了&#xff0c;其中发展的最好的就是抖音平台&#xff0c;大家如果要利用抖音平台达到引流的目的的话&#xff0c;也要去学习一下抖音相关的技巧&#xff0c;那么抖音怎么去买号呢&#xff1f;跟着吉林优美姿小编来一起看看吧&#…

亚马逊---人工智能入门---学习笔记

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;蓝桥杯算法笔记 &#x1f4ac;总结&#xff1a;希望你看完之…

SpringBoot 的配置

目录 配置文件到底有什么作用呢 ? SpringBoot的配置文件的格式有哪些呢? properties配置文件 yml配置文件 properties乱码问题 多平台的配置文件设置 配置文件到底有什么作用呢 ? 配置文件主要是配置项目的一些重要的数据.. 比如配置数据库的连接信息 数据库是非常重…