1.文件操作权限
所谓权限,指的是文件系统为了进行安全管理需要在对文件操作时进行用户身份认证。合法的用户可以进行操作,而没有权限的用户不能进行文件操作。
chomd +x a.out
可以更改文件权限
在c编程中,需要3个八进制数字来表示文件权限。
第一个数表示本用户的权限
第二个数表示同组用户的权限
第三个数表示其他用户的权限
数字不同的值代表不同的权限,数字的含义:
4表示可读权限,相当于r权限
2表示可写权限,相当于w权限
1表示可执行文件,相当于x权限
2.错误处理与错误号
在进行文件操作时,用户可能会遇到权限不足、找不到文件等错误,这时需要在程序中设置错误捕捉语句并显示错误。错误捕捉和错误输出是应用错误号和strerror()函数来实现的。
2.1错误定义的理解
Linux系统已经把所有的错误定义成不同的错误号和错误常数,程序如果发生了异常,会返回这个错误常数。这个数字可以显示为整形数字,也可以用strerror()函数来显示为已经定义的错误信息。(linux一共定义了131个错误常数)
2.2用错误常数显示错误信息
程序错误返回的错误常数是不容易理解的,需要转换成有效的识别语句。函数strerror()可以把一个错误常数转换成一个错误提示语句。
2.3用错误号显示错误信息
函数strerror()可以把一个错误常数返回成一个表示错误信息的字符串。
eg: char *strerrror(int errrnum);
函数的参数是一个表示错误信息的整形数,返回值是一个字符串。
3.创建与删除目录
3.1创建目录函数mkdir()
函数mkdir()可以在硬盘中创建一个目录, 相当于mkdir命令。但是与mkdir命令不同的是,这里的操作是使用C语言的函数完成目录创建的。
int mkdir(char * pathname , mode_t mode);
在参数列表中,pathname是一个字符型指针,表示需要创建的目录路径,mode是表示权限的八进制数字,如果创建成果,则返回整数0,否则返回整数-1.
EPERM:目录中有不符合规则的名字。
EEXIST:参数pathname所指的目录已存在。
EFAULT:pathname指向了非法的地址。
EACCESS:权限不足,不允许创建目录。
ENAMETOOLONG :参数pathname太长。
ENOENT:所指的上级目录不存在。
ENOTDIR:参数pathname不是目录。
ENOMEM:核心内存不足。
EROFS:欲创建的目录在只读文件系统内。
ELOOP:参数pathname有多个符号链接。
ENOSPC:磁盘空间不足。
3.2删除目录函数rmdir()
rmdir()函数的作用是删除一个目录。
int rndir(char *pathname);
参数pathname是需要删除的目录字符串的指针。如果删除成功,则返回0,否则返回-1。
4.文件的创建与删除
4.1创建文件函数creat()
函数create()的作用是在目录中创建一个空文件。
int creat(char *pathname ,mode_t mode);
函数的参数pathname表示需要创建文件的文件名和目录名,mode表示这个文件的权限。
4.2删除文件函数remove()
函数remove()的作用删除一个文件。
int remove(char *pathname);
参数pathname是一个字符型指针,需要删除文件,文件删除成功则返回0,否则返回-1.
4.3创建临时文件函数mkstemp()
所谓临时文件,指的是程序运行时为了存储中间数据而建立的文件。计算机重启时,这些文件会自动删除。如果在程序运行时需要把文件短时间写在磁盘上,可以使用mkstemp()函数创建一个临时文件。
mkstemp(char *template);
参数template表示需要建立临时文件的文件名字符串。文件名字符串中最后六个字符必须是XXXXXX。mkstemp()函数会以可读写模式和0600权限来打开该文件,如果文件不存在,则会创建这个文件,返回值是打开这个文件的编号;如果文件创建不成功,则返回-1.
5.文件的打开与关闭
文件的打开指的是从磁盘中找到一个文件,返回一个整型的打开文件顺序编号,打开的文件处于可读写状态。文件的关闭指的是释放打开的文件,使这个文件处于不可读写的状态。
5.1打开文件函数open()
函数open()的作用是打开一个文件,使这个文件处于可读写状态。
int open(char *pathname,int flags);
int open (char *pathname, int flags,mode_t mode);
5.2关闭文件函数close()
函数close()的作用是关闭有一个已经打开的文件。使用完文件后,需要使用close()函数关闭该文件,这个操作会让数据写回磁盘,并释放该文件所占用的资源。
int close(int fd);