Linux应用程序学习之文件系统调用函数编程
上一篇我们了解了Linux系统下函数库的设计方法,这一章我们就来学习一下linux系统下常用的文件操作函数,在进行系统文件操作函数介绍前,我们首先要明白一个术语:文件描述符。何为文件描述符?在linux系统中,所有打开的文件都有一个数字对应,由系统来分配这个数字,这个数字就称为文件描述符。
具体使用方法我们后面编程来介绍,下面我们就来看看函数介绍。
有关Liunx系统中文件编程用到的常用的函数有七个,在此我不打算详细列举其用法之类的,而是介绍一种函数学习方法,授之以鱼不如授之以渔,可以让我们更好掌握这些函数的使用。
Linux文件编程常用的函数有
打开文件函数:open
创建文件函数:creat(open也可创建文件)
读取文件函数:read
写入文件函数:write
定位文件函数:lseek
复制文件函数:dup
关闭文件函数:close
我们如何去了解这些函数内?打开我们的Liunx系统终端,例如我们想了解open函数的相关信息,可以在我们的命令行界面输入
man open
就可以查询我们的open函数的相关信息了,如图所示:
如此便有我们需要函数的详细介绍了,稍微懂点英文便可以看懂了,需要说明的是,我们的man 命令分了很多章节,第一个章节是命令,第二个章节是系统调用函数,第三个章节是库函数,每当我们man一个关键字的时候,首先是从我们的第一个章节也就是命令章节来查找,如果没找到就进入下一个章节查找,我们的read关键字是我们的一个liunx下的命令,因此在第一个章节中也有,所以我们只是man read只会出来read这个命令的信息,而不是相关函数的信息,如果我们要查看函数的信息,由于read属于系统调用函数,属于第二个章节,因此我们可用下面的命令
man 2 read
write也是一样的。
好了,介绍完上面的函数太过于理论,下面就以一个实例编程来加深对其的直观感受吧。
我们就实现linux命令cp所完成的功能吧,即将一个文件复制到另外一个位置(参照学习视频)。下面是程序代码,我已做好详细的注释。
#include
#include
#include
#include
#include
void main(int argc, char *argv[])
{
int fd_s;
int fd_t; //定义源文件和目标文件的文件描述符
int count = 0; //每次复制的字节数
char buf[128]; //定义一个数据缓冲区,一次读取128个字节
fd_s = open(argv[1] , O_RDONLY); //打开源文件
//由于目标文件没有,所以要创建,用open函数可以,用creat函数也行
fd_t = open(argv[2] , O_RDWR|O_CREAT,0666);
while( (count = read(fd_s , buf,128))>0) //读取源文件数据,这个位置要判断是否还有数据可读
write(fd_t , buf , count); //读完之后就是写如数据了,这个一定要写成count,因为源文件字节数不一定是128的整倍数,读多少就写多少
close(fd_s);
close(fd_t);
}
下面我们就在linux下面运行我们的程序看看结果:
以上就是我学习linux系统下文件编程的总结,希望得到指正。