第9章 目录与文件 注意:前面已经对这方面知识进行过大致学习。
9.1 文件操作的权限。
9.2 错误处理与错误号:错误捕捉和错误输出是应用错误号和strerror函数来实现的。
9.2.1 错误定义的理解
linux系统已经把所有的错误定义成了不同的错误号和错误常数,如果程序发生了异常,会返回一个错误的常数。
也可以用strerror函数来显示为已经定义的错误信息。
9.2.2 用错误常数显示错误信息
9.2.3 用错误号显示错误信息
9.3 创建与删除目录
在linux系统中,目录就是一个文件夹,文件可以存放在目录中。-----C程序的目录操作
9.3.1 创建目录函数mkdir
函数mkdir可以在硬盘中建立一个目录,相当于mkdir命令,但与mkdir命令不同的是,这里的操作是用C语言的函数完成目录创建的。
需要两个头文件:"sys/types.h" "sys/stat.h"
在创建目录时,由于种种原因,可能会返回一些错误常数。。。。
重点的出现的一个问题:13 段错误核心已转储-----原因还是:一个是ROOT,,,,一个是HOME,,,身份【权限】很重要,,LINUX中!!!!!!!-----这个东西是要首要考虑的!!!!!!!!!!!!!!!
又出现一个错误-----注意!!!!---strerror这个函数,,要使用的话,必须要包含<string.h>这个头文件---这个书中没有加,,所以出错,,,所以说这本书中存在不少的错误。
extern int errno-------这个表示的是extern表示的是外部变量的意思。
9.3.2 删除目录函数rmdir
9.4 文件的创建与删除
创建文件,指的是在一个目录中建立一个空文件,可供其他程序的写入操作。删除文件指的是从磁盘中删除无用的文件。
9.4.1 创建文件函数creat
三个头文件:#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>
注意:与创建目录不同的是,当再次运行这个程序时也能创建同名的文件,这时新创建的文件会覆盖以前的文件。
9.4.2 删除文件函数remove
9.4.3 建立临时文件函数mkstemp
9.5 文件的打开和关闭
文件的打开指的是从磁盘中找到一个文件,打开的文件处于可读、可写状态。
文件的关闭指的是释放打开的文件,使文件处于不可读写的状态。
9.5.1 打开文件函数open
int open(char *pathname, int flags, mode_t mode)
pathname---表示要打开文件的路径字符串
flags-----系统定义的一些整型常数: O_RDONLY 只读 O_WRONLY 只写 O_RDWR 以可读写方式打开
需要的头文件:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
9.5.5 关闭文件函数close
使用完文件后需要使用close函数关闭该文件,这个操作会让数据写回磁盘, 并释放该文件所占用的资源。
需要使用这个头文件:#include<unistd.h>
9.6 文件读写
文件读写指的是从文件中读出信息或将信息写入到文件中。文件读取用read,,,,文件写入用write函数来实现。
注意:在进行文件写入的操作时,只是在文件的缓冲区中操作,可能没有立即写入到文件中,需要使用sync 、fsynx函数将缓冲区内的数据写入到文件中。
9.6.1 在文件中写字符串函数write
使用实例:用open函数打开一个文件,将一个字符串写入到这个文件中,然后关闭文件。
9.6.2 读取文件函数read。
9.6.3 文件读写位置的移动:可以使用lseek函数在文件内容中的位置上面移动,这样就可以在文件中不同的位置进行读写。
所需头文件<sys/types.h> <unistd.h>
9.6.4 将缓冲区数据写入到磁盘函数sync。
头文件<unistd.h>---------------强制将写入缓冲区的数据写入磁盘。
9.6.5 将缓冲区数据写入到磁盘函数fsync。
该函数与sync函数的区别在于:这个函数可以指定打开文件的编号,执行以后会返回一个值。
9.7 文件锁定
文件锁定:一个程序打开文件以后,其他的程序不能读取或写入文件。
9.7.2. 文件锁定函数flock。
9.7.3 文件锁定函数fcntl。
9.8 文件的移动与复制
9.8.1 文件的移动函数rename。
9.9 文件实例:电话本程序。