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

配置好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 涉及到文件锁的操作

时间: 2024-10-15 06:13:08

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

Linux学习笔记——如何使用echo指令向文件写入内容

0.前言 本文总结如何使用echo命令向文件中写入内容,例如使用echo指令覆盖文件内容,使用echo指令向文件追加内容,使用echo指令往文件中追加制表符. echo向文件中输出内容的基本方法是使用IO重定向指令--">",默认情况下echo输出到标准输出中,使用>指令可重定向输出到文件中. 1.echo指令基本用法 [1]Linux官方用户手册--echo指令 [2]输入指令获得帮助 sudo echo --help 返回内容如下 用法:echo [短选项]... [字

Linux学习笔记——例说makefile 单个C文件

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.一个较为复杂的例子 [代码仓库]--makefile-example 代码仓库位于bitbucket,可借助Tortoise

Linux学习笔记——例说makefile 多个文件

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.一个较为复杂的例子 [代码仓库]--makefile-example 代码仓库位于bitbucket,可借助Tortoise

iOS学习笔记之ARC内存管理

iOS学习笔记之ARC内存管理 写在前面 ARC(Automatic Reference Counting),自动引用计数,是iOS中采用的一种内存管理方式. 指针变量与对象所有权 指针变量暗含了对其所指向对象的所有权 当某个方法(或函数)有一个指向某个对象的局部变量时,可以称该方法(或函数)拥有该变量所指向的对象,如: int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSSt

Linux学习笔记十:软件包管理

在Linux的众多版本中,可以大致分成两个系列,分别是:RedHat系Linux,Debian系Linux.在这两种不同系的Linux中,软件包的管理也是有着一定的区别,但他们的原理都大致相同.这篇笔记将以RedHat系Linux为重点讲解其软件包的管理,并简单介绍Debian系Linux软件包的管理.其大致的结构如下: · RedHat系Linux软件包管理 - 1. 二进制包管理(基于rpm) - 2. 二进制包管理(基于yum) - 3. 源代码包管理 - 4. 脚本安装 · Debian

Linux学习笔记(22) Linux启动管理

1. 系统运行级别 运行级别 含义 0 关机 1 单用户模式,可想象为windows的安全模式,主要用于系统修复 2 不完全的命令行模式,不含NFS服务 3 完全的命令行模式,就是标准字符界面 4 系统保留 5 图形模式 6 重启动 (1) 运行级别命令 runlevel #查看运行级别命令 N表示进入3前面的级别 init 运行级别 #改变运行级别命令 (2) 系统默认运行级别 在配置文件/etc/inittab中进行修改即可 id:3:initdefault: #系统开机后直接进入哪个运行级

【cocos2d-x 3.x 学习笔记】对象内存管理

内存管理 内存管理一直是一个不易处理的问题,开发者必须考虑分配回收的方式和时机,针对堆和栈做不同的优化处理,等等.内存管理的核心是动态分配的对象必须保证在使用完毕后有效地释放内存,即管理对象的生命周期.由于C++是一个较为底层的语言,其设计上不包含任何智能管理内存的机制.一个对象在使用完毕后必须被回收,然而在复杂的程序中,对象所有权在不同程序片段间传递或共享,使得确定回收的时机十分困难,因此内存管理成为了程序员十分头疼的问题. 另一方面,过于零散的对象分配回收可能导致堆中的内存碎片化,降低内存的

Linux学习之路5-磁盘管理及文件系统管理

磁盘管理及文件系统管理 Linux磁盘管理 分区工具fdisk (最多支持一个硬盘划分15个分区) 管理子命令: n 新建 p 显示分区 t 更改分区类型 d 删除分区 l分区类型说明 w 保存退出 q 放弃保存退出 m 获取帮助 注意:创建完成之后,查看内核是否已经识别新的分区: # cat /proc/partitions 如果没有识别,可以使用以下命令让系统识别: CentOS 5上使用: partprobe [DEVICE],例如pratprobe /dev/sdb1 CentOS 6,

Linux学习笔记:Linux发行版

Linux发行版 什么是Linux distribution – Linux的本质来说,它只是操作系统的核心(内核),负责控制硬件.管理文件系统.程序迚程等,并丌给用户提供各种工具和应用软件. – 人们以Linux核心为中心,再集成搭配各种各样的系统管理软件戒应用工具软件组成一套完整的操作系统,如此的组合便称为Linux发行版. Linux主要发行版 RedHat Linux:红帽企业级Linux是系统管理员的第一选择,它有众多的程序包,还有非常到位的支持,由于该发行版是商业化产品,所以丌是免费