在linux下编程有两种方法,一种是用c库函数的调用,另一种是用系统调用的方式。当然两者有一定的区别,前者依赖于linux系统,而后者与操作系统是独立的,在任何操作系统下,使用C语言库函数操作文件的方法都相同。因为在试验中我利用系统调用的方式实现了文件的拷贝,所以我谈谈操作中的注意点。
系统调用的方式与我们平时用c语言有较大的差异,其最主要的差异在于c语言是用指针来定义文件,如 FILE *fp,而系统调用则用文件描述符,这是一个由系统分配的非负整数。要实现文件拷贝,则首先要定义两个文件描述符,对应着源文件和新文件,如 int from_fd,to_fd。其次,要定义缓存区。这个缓存的指针就像小车一样,将读取的数据先暂存于其中,然后再运到目标文件中,最后再清空。就这样周而复始的进行下去,直到完全读取完源文件。当然系统调用最重要的一点是在于main函数,他要包含入口参数及参数个数,这两个变量将作为下面程序重要的if判断依据,主要是用于检查参数是否在于合理范围之内。
在文件拷贝的过程中,用到了几个重要的系统函数,比如打开文件用open,读取文件用read,写入用write,获取文件大小用lseek。当然,在在最后也不能忘记用close关闭文件。同时也应该注意的是,在windows和linux下文件的差异,在linux下是不区分二进制和文本文件,而在windows中是有区分的,其对应的读取方式也是不同的。