arm-linux学习笔记3-linux内存管理与文件操作

时间:2022-03-30 00:22:12

配置好linux系统之后需要vim配置一下,有助于我们的编程,主要的配置如下

在/etc/vim/vimrc文件中

"显示行号

set number

"自动缩进

set autoindent

"智能缩进

set smartindent

"一次四格 tab

set tabstop=4

"一次四格

set shiftwidth=4

"括号匹配

set showmatch

"右下角显示光标状态行

set ruler

"文件类型检测

filetype on

基本上这些配置就好了

内存管理基本上就是内存的申请,内存的释放,已经申请的内存大小调整这些函数,如下使用

malloc 用于申请内存

free 用于释放内存

calloc 申请一块内存,同时初始化这一块内存

realloc原来的内存大小不对,现在申请一块新的内存,同时先释放掉原来的内存

文件系统

Linux文件系统支持两种,一种是系统调用的编程,还有一个是标准库的编程,先说标准库

在linux ascii编程中,文件的表示是文件指正FILE*类型

  1. 标准输入 stdin键盘标准输入 stdout标准输出默认是屏幕 stderr 标准错误 默认是屏幕
  2. 缓冲,linux文件系统包含三种缓冲机制,全缓冲,缓冲区写满之后才会读写物理设备,行缓冲,遇到换行符’\n’才会写入物理设备 无缓冲,直接读写,建议不用

setbuf函数可以设置缓冲区大小,参数是文件指针和缓冲区

setvbuf 设置缓冲的大小,缓冲的模式

3._IOFBF全缓冲   _IOLBF行缓冲  _IONBF无缓冲

4.文件的打开和关闭

fopen 打开带模式 r读 w wb 写并清空 rb+读写打开 w+写并清空

fclose 关闭文件

读文件

getc 读取一个字节,失败或者到末尾返回EOF

fgetc 和前一个一样

getchar 从标准输入读入一个字节

putc

fputc 写入一个字节

putchar 向标准输出写入一个字节

fgets 从文件中读取一行

gets 从标准输入读取一行

fputs 向文件中写入一行字符串,终止符必须是nil

puts 向标准输出输出一行

fread 读取一块 参数是缓冲区指针 数据块大小 数据块数量 文件指正

fwrite 写入一块 参数类似,只是动作变成了写入

文件定位

fseek 参数为文件指针 定位偏移 起始点

SEEK_CUR 当前位置 SEEK_END文件结尾 SEEK_SET文件开头

ftell 该函数也是文件定位,只是依靠文件指正参数中的数据来定位

rewind 将文件指正设置为最开始位置

第二种文件编程为系统调用 posix调用

Posix调用对于每一个文件都有一个文件描述符,是一个整数,代表一个索引值,默认一个进程最多可以打开1024个文件

标准输入文件描述符0 标准输出 1 标准错误 2

文件的打开

首先使用posix需要包含文件

<sys/types.h>

<sys/stat.h>

<fcntl.h>

还有一个全局的变量errno

open 打开文件,文件路径 打开标志 (打开同时创建还要制定文件权限)

标志包括o_rdonly o_wronly o_rdwr等

create 创建文件 目前不需要,直接使用open就可以创建

close 关闭文件,参数为文件标识符

读写文件内容

write

read

文件定位

lseek 参数与fseek基本一致,只是文件指针换成了文件标识符

修改已经打开的文件的属性

fcntl 涉及到文件锁的操作