Linux基础API(一)

Linux基础API
Linux 操作系统为我们提供了一系列的API
如基本的open、write、read、lseek、close
1、 文件打开及创建
open() 执行后会返回一个文件描述符,用来进行下一步操作或区分辨别。
Linux系统中的man手册
失败返回 -1
Pathnanme: 要打开的文件名(含路径,缺省为当前路径)
Flags:
O_RDONLY 只读打开 O_WRONLY 只写打开 O_RDWR 可读可写
当我们附带了权限后,打开的文件就只能按照这种权限来操作。
以上这三个常数中应当只指定一个。下列常数是可选择的:
O_CREAT若文件不存在则创建它。使用此选项时,需要同时说明第三个参数mode,用其说明该文件的存取许可权限。
O_EXCL若果同时制定了O_CREAT,而文件已经存在,则出错。
O_TRUNC属性去打开文件时,如果这个文件本来是有内容的,而为只读或只写成功打开,则将其长度截短为0.
Mode:一定是在Flags中使用了O_CREAT的标志,mode记录待创建的文件的访问权限。
“或符号” 如O_RDWR|O_CREAT
用了O_CREAT之后后面要加“,权限”
权限:
可读 r 4
可写 w 2
可执行 x 1 如 0600 ->4+2
当前用户 与用户同组 其他组用户

2、文件写入操作编程
写入文件 write()
将buf缓冲区中的数据写入到fd文件中

成功返回写入字节数 失败返回-1
在写完之后即调用完write()之后要记得用close()关闭
在这里插入图片描述这两个函数的头文件是一样的
另外在write()函数中要给出所需要的字节数大小,size_t count,此时可以用strlen()函数来计算(不包含’/0’)
在这里插入图片描述
头文件 #include <string.h>

3、 读取文件
读 read()
将fd文件中的数据读取到buf缓冲区中
在这里插入图片描述
成功返回 所读取到的字节数
失败返回 -1 还有一个Errors 可以用perror()打印出来
在创建buf缓冲区时注意要对其进行初始化 不然会是个野指针,会发生段错误,要用malloc()函数对其进行开辟内存。
malloc() 头文件#include<stdlib.h>
在这里插入图片描述
Ps:malloc()是一个空类型的指针,到时候注意是否要对其类型的一个强制转换
Ps:在连续使用write()和read()时 write()函数在写入文件数据之后光标在末尾位置,如果直接进行读取的话可以读取成功但是读取不到内容,应该把光标移到头再读,或者重新打开文件再读取。

4、光标的移动
文件光标位置 lseek()
将文件读写指针相对whence移动offset个字节
在这里插入图片描述
SEEK_SET 指向文件头
SEEK_END 指向文件尾
SEEK_CUR 指向当前位置
调用成功 返回文件末尾相对于开头的字节数即文件字节数
调用失败 返回-1

5、文件打开创建的补充
O_CREAT 若文件不存在则创建它。使用此选项时,需要同时说明第三个参数mode,用其说明该新文件的存在许可权限
O_EXCL 如果同时指定了O_CREAT。而文件已经存在,则出错,即返回 -1
O_APPEND 每次写时都加到文件的尾端
O_TRUNC 属性去打开文件时,如果这个文件中本来是有内容的,
而且是只读或只写成功打开,则将其长度截短为0
Int create(const char *filename,mode_t mode)
Filename:要创建的文件名(包含路径、缺省为当前路径)
在这里插入图片描述
mode:创建模式 // 可读可写可执行 4 2 1 7

宏表示 数字
S_IRUSR 4
S_IWUSR 2
S_IXUSR 1
S_IRWXU 7

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页