Linux高级编程常用的系统调用函数汇总
1. 文件操作:
库函数访问(缓冲区操作):
原型:
FILE * fopen(const char * path,const char * mode);
头文件:
#include
参数:
path:带路径的文件名
mode打开方式:
r: 只读 文件必须存在
r+: 可读可写 不会新建文件,文件必须存在
w: 只写 如果文件不存在,新建文件
w+: 可读可写 如果文件不存在,新建文件
a: 追加
a+: 可读可写
返回值: 文件指针
1.2:fclose(关闭文件):
fclose()函数可以把缓冲区内最后剩余的数据输出到磁盘文件,释放文件指针和有关的缓冲区。
运行程序后输入数据正常关闭会写入到文件,如果程序意外关闭,没有调用fclose,文件数据丢失。
1.3:单个字符的读写:
单个字符读写
输入输出是相对于内存来说的:
getchar();
键盘获取
putchar();
输出显示
fputc();:输出字符
内存
fgetc();:获取字符
feof(fp);
判断文件指针是否到文件尾部,没有返回0 到达返回1
字符串读写:
1.4:fgets(读取字符串):
功能:
从stream 所指的文件内读入字符并存到参数s 所指的内存空间, 直到出现换行字符、读到文件尾或是已读了size-1 个字符为止, 最后会加上NULL 作为字符串结束
原型:
char * fgets(char * s, int size, FILE * stream);
头文件:#include
参数:
s保存读取到的字符
size要读取的字符的个数
stream为文件流指针
返回值:
取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL
1.5:fputs:(可以输出任意文件):
fputs:
可以输出任何文件
补充学习:
gets puts
块读写操作:
1.6:fread(块读),fwrite(块写):
函数原型:
fread:
size_t fread(void *buffer,size_t size, size_t count,FILE *fp)
fwrite:
size_t fwrite(void *buffer,size_t size, size_t count,FILE *fp)
返回值
成功,返回读/写的块数;出错或文件尾,返回0
说明
typedef unsigned size_t;
参数
buffer: 指向要输入/输出数据块的首地址的指针
size: 每个要读/写的数据块的大小(字节数)
count: 要读/写的数据块的个数
fp: 要读/写的文件指针
1.7:格式化读写: fscanf,fprintf:
格式化读写
fscanf:
fscanf可以扫描任何文件,不仅仅是键盘,scanf是fscanf
fprintf:
可以输出到任何文件
1.8:文件指针定位函数:rewind,fseek,ftell:
rewind: 将读写指针定位到文件开始位置,无返回值
fseek: 将读写指针定位到指定位置
fp:要操作的文件
offset:偏移量(可正可负)
whence:参考位置
SEEK_SET //文件开始
SEEK_CUR //文件当前位置
SEEK_END //文件尾
ftell
返回当前文件读写指针的位置,常用来求文件的大小
1.9: 输出程序错误 perror :
输出程序错误:
perror("xxx");
系统调用(非缓冲区操作):
1.1:open(打开或创建一个文件):
函数功能:
打开或创建一个文件
函数原型:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
所属头文件:
函数参数:
pathname:文件路径
flag:(动作标志)
O_RDONLY 读 有且只能有一个
O_WRONLY 写 有且只能有一个
O_RDWR 读写 有且只能有一个
O_CREAT 没有就创建 有就访问
O_EXCL 和O_CREAT连用,如果有 返回错误
O_TRUNC 将文件截取为0
O_APPEND 追加
mode(权限):
当第二个参数有O_CREAT,表示创建文件的时候给定文件的权限
返回值:
成功返回文件表示符fd,失败返回-1
1.2:close(关闭文件):
函数功能:
关闭文件
函数原型:
int close(int fd);
所属头文件:
函数参数:
文件描述符fd
返回值
成功返回0,失败返回-1
读写函数:
1.3:write(向打开的文件写数据):
功能:
向打开文件写数据
原型:
ssize_t write(int fd, const void *buf, size_t count);
所属头文件:
参数:
fd:打开成功的文件描述符
buf:要写入的数据存放位置
count:写入的数量
返回值:
成功返回写入字节数,失败返回-1
1.4:read(从打开的文件中读取数据):
功能:
从打开的文件中读取数据
原型:
ssize_t read(int fd, void *buf, size_t count);
所属头文件:
参数:
fd:文件描述符
buf:存放数据的缓冲区的首地址
count:读多少字节
返回值:
成功返回读到的字节数,失败返回-1
1.5:lseek(指针定位):
功能:
重新定位文件的读写位置
原型:
off_t lseek(int fildes, off_t offset, int whence);
所属头文件:
参数:
fildes:文件指针fd
offset:偏移量 负数向左移动 正数向右移动
whence:相对位置
SEEK_CUR //当前位置
SEEK_SET //开始位置
SEEK_END //末尾位置
返回值:
成功:返回移动之后的文件指针距离文件头的位置 失败:-1