嵌入式系统方向学习笔记10

笔记系列

嵌入式系统方向学习笔记6
嵌入式系统方向学习笔记7
嵌入式系统方向学习笔记8
嵌入式系统方向学习笔记9



文件与函数

一、文件

1、Linux文件

1、Linux文件:
文件本身包含的数据(打开文件可以看到数据信息)
2、文件描述符:本质实时一个正整数 open函数 0=OPEN-MAX

man:查命令
在这里插入图片描述
man2:系统调用
在这里插入图片描述
man3:查库函数

2、文件属性

文件属性:ls -l (元数据:文件的访问权限,文件的大小,创建日期等)
目录也是文件之一(当创建一个新的目录的时候,系统自动创建两个新的文件项 . 和 . .)
在这里插入图片描述
. :当前目录

. . :上一级目录

cache:应用程序的缓存文件

lib:应用程序的信息和数据

local:usr/local中程序的信息

lock:锁文件

log:日志文件

opt:/opt中程序信息和数据

run:正在执行的信息,PID文件

tmp:临时文件

media:文件系统的挂载点

3、文件类型

  • 普通文件类型
    Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]
  • 目录文件
    就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx]
  • 块设备文件
    块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]
  • 字符设备
    字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]
  • 套接字文件
    这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型
  • 管道文件
    FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]
  • 链接文件
    类似Windows下面的快捷方式

二、操作系统

内核:操作系统对于软硬件和系统资源分配的最重要的核心部分
系统调用:操作系统提供给用户的一组“特殊”的接口,用户可以通过这组接口来获取操作系统内核提供的服务

在这里插入图片描述
用户编程接口:系统调用不是直接和程序员进行交互,它仅仅提供一个通过软中断机制向内核提交请求。来获取内核服务的接口,在实际使用中程序员调用的通常是用户编程接口(API)

ps:系统命令比api更高级


三、函数

1.相关知识

File*
结构体

缓冲区:程序中每个文件都可以使用

磁盘文件->缓冲区->内核(CPU)

stdio.h:c的标准输入输出库:l/O

行缓冲:stdout终端上进行输出的时候,输出的规则为每当出现换行符的时候进行依次刷新缓存,然后进行操作(printf输出的时候,时看到换行符才进行输出的)

2.creat函数

creat:创建文件函数
Int creat(文件描述符,创建模式)
创建模式
S_IRUSR : 可读
S_IWUSR : 可写
S_IXUSR :可执行
S_IRWXU:可读可写可执行

在这里插入图片描述

代码如下:

int fd = creat("./test",S_IRWXU);

3.open函数

O_RDONLY:以只读的方式打开文件
O-WRONLY:以只写的方式打开文件
O_RDWR:以可写可读的方式打开
O_CREAT:如果文件存在就打开,不存在就创建
O_APPEND:写文件的时候追加文件末尾

出错返回-1

4.write函数

write函数:向文件写入数据
write(文件描述符,写入的数据指针,写入的数据内存大小)
在这里插入图片描述

5.lseek函数

lseek:用来调整光标的位置
lseek(文件描述符,光标移动位置数,光标移动的形式)

SEEK_SET:将光标移动到文件开头再增加相应的offset位置

SEEK_CUR:将光标移动到文件的当前位置再往后加offset的位置

SEEK_END:将光标移动到末尾再增加offset的位置
lseek函数返回值:从文件开头到光标位置有多少个字符
在这里插入图片描述

6.fopen函数

fopen():
r:只读
w:如果文件不存在,创建一个新的,如果存在,清空文件内容
a:追加:不存在,创建一个新的,存在就在文件末尾进行追加
r+:可读可写
w+:w + ( r+ )
a+:a +( r + )

在这里插入图片描述

7.fread函数

ptr:字符串指针
size:读取每个字符的大小
nmemb:读多少个
stream:文件描述符指针


四.输入输出家族

1.读字符家族

读字符家族:
getc:从文件里读取一个字符getc(fp)返回值:当督导文件末尾的时候返回EOF

fgetc:函数调用
在这里插入图片描述
getchar:将字符从unsigned char转换成int进行返回,带走缓冲区

2.写字符家族

fputc:将某一字符写入文件流
Int fputc(int c,FILE *steram)
在这里插入图片描述
putc:宏定义
putchar:
在这里插入图片描述

3.printf家族和scanf家族

1.printf家族

printf:

fprintf: int fprintf(FILE *stream,const char *format,…)
在这里插入图片描述
在这里插入图片描述
Sprintf():
在这里插入图片描述
在这里插入图片描述

2.scanf家族

fscanf:从文件流里写读字符串

Int fscanf(FILE *stream,const char *format,…)

sscanf():从字符串里读取变量


作业

1、封装printf
2、解决错误sscanf.c
3、照片

猜你喜欢

转载自blog.csdn.net/llalal/article/details/115225678