
一、Linux文件的属性
文件的属性:
我们在Gcc编译器输入“ ls -al"指令时,除了有不同的类型外还有一些字母串如”drwx-wx-wx",除第一个字符外(表示文件类型:例如普通文件),这里还剩三组,每组3个字符构成的字符串,这里的3个字符实质上就是文件的访问属性:
r:可读;w:可写;x:可执行
三组字符串的分类:
①第一个3位字符组表示文件拥有者对该文件的权限;
②第二个3位字符组表示同组的用户对该文件的权限;
③第三个3位字符组表示其他用户对该文件的权限;
二、文件描述符的概念及作用
什么是文件描述符:文件描述符是一个非负整数,当某个程序打开文件时,操作系统返回相应的文件描述符,程序处理该文件必须引用此描述符。
系统默认的描述符如下:
三、系统调用的概念
所谓系统调用,是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组接口来获得操作系统内核提供的服务,例如用户可以用来创建进程等。
系统调用关系图:
从上图可以看出系统将程序的运行空间分为了内核空间和用户空间,通过API接口实现系统调用,目的是保护系统的内核。
四、不带缓存的文件I/O操作的相关函数
(1)creat函数
函数的作用:创建一个新文件
函数的原型:int creat(const char *filename,mode_t mode);
头文件:#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
返回:执行成功,返回新的文件描述符;执行出错,返回-1。
函数参数:
fliename:文件名或文件路径
mode:创建文件的模式:①S_IRUSR 可读
②S_IWUSR 可写
③S_IXUSR 可执行
(2)open函数
函数的作用:打开一个文件
函数的原型:①int open(const char *pathname,int flags);(所打开文件存在下使用)
②int open(const char *pathname,int flags,mode_t mode);(所打开文件不存在时创建并打开)
头文件:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
返回:执行成功,返回新分配的文件描述符;执行出错,返回-1。
参数:
对于参数flags有以下几种:
① O_CREAT:若文件不存在,该参数可以创建该文件
② O_RDONLY:以只读方式打开文件
③ O_WRONLY:以只写方式打开文件
④ O_RDWR:以可读写方式打开文件
⑤ O_APPEND:以附加方式加到文件后面(保存原来有的内容)
(4)read函数
函数的作用:从打开的文件中读取数据
函数的原型:ssize_t read(int fd,void *buf,size_t count);
头文件:#include <unistd.h>
返回:执行正常时,返回实际读取到的字节数;若读取文件结束或者无数据读取时,返回0;执行出错,返回-1。
参数:
fd:文件描述符
buf:文件读取到的数据存放的地址
count:要读取数据的大小

(5)write函数
函数的作用:向打开的文件中写入数据
函数的原型:ssize_t write(int fd,const void *buf,size_t count);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30196-1.html
日本电器20年照样杠杠的