linux 操作系统 文件复制 操作
- 格式:doc
- 大小:175.00 KB
- 文档页数:4
“网络操作系统”课程
实验报告
姓名:
学号:
专业:计算机科学与技术
编制时间:2012年5月日
指导教师:
北京联合大学-信息学院编制
Linux –文件的系统调用
1.实验目的
熟悉有关文件的系统调用,学习文件系统的系统调用命令,提高对文件系统实现功能的理解和掌握。使用fopen、fread、fwrite 等系统调用用C语言编程实现复制文件。
2.实验过程
1.在stu2文件夹里建立hello.c
2.在hello.c文件里编辑源代码。
3.在桌面右击打开终端,返回到stu根目录
编译c文件
gcc -o hello.out hello.c
运行文件:
./ hello.out
3.实验步骤及分析
1.事先在stu2文件夹中建立一个文件hxh.txt,打开并输入I’m huxihuan!!!
2.在hello.c文件中输入:
#include
Int main()
{
int len;
char *buffer[1024];
FILE *in,*out;//定义两个文件流,分别用于文件的读取和写入
if ((in=fopen(“/home/stu2/hxh.txt”,”r”))==NULL){//打开源文件的文件流,其意义是在当前目录home/stu2/下打开文件hxh.txt,只允许进行“读”操作,并使in指向该文件printf(“the hxh.txt can’t open\n”);
exit(0);//exit(0)作用是关闭所有打开的文件,并终止程序的执行。参数0表示程序正常结束,非0参数通常表示不正常的程序结束。
}
if((out=fopen(“/home/stu2/hxh1.txt”,”w”))==NULL){//打开目标文件的文件流,其意义是在当前目录home/stu2/下打开文件hxh1.txt,只允许进行“写”操作,并使out指向该文件
printf(“the file hxh1.txt can’t open\n”);
exit(0);
}
while((len=fread(buffer,1,1024,in))>0)//源文件中读取数据并放到缓冲区中,表示从in 所指的文件中,每次读1个字节送入字符组buffer中,连续读1024次,即读1024个字符到buffer中。第二个参数也可写成sizeof(char)
{
fwrite(buffer,1,len,out);//将缓冲区的数据写到目标文件中,表示从buffer的地址开始的内存单元按照1个字节的大小取一个数据块,写入out指向的文件中
}
fclose(out);关闭文件的写入流
fclose(in);关闭文件的读取流
return 0;
}
4.注释
(1)函数功能:用来打开一个文件,
一般调用形式:文件指针名=fopen(文件名,使用文件方式);
说明:
“文件指针名”必须是被说明为FILE 类型的指针变量;
“文件名”是被打开文件的文件名;
“使用文件方式”是指文件的类型和操作要求。
“文件名”是字符串常量或字符串数组。
(2)函数功能:用来读写一个数据块。
一般调用形式:fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
说明:
buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
size:要读写的字节数;
count:要进行读写多少个size字节的数据项;
fp:文件型指针。
注意:1.完成次写操(fwrite())作后必须关闭流(fclose());
2.完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出。
(3)函数功能:关闭一个流
一般调用形式: int fclose(FILE *stream);。
注意:使用fclose()函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。
(4)函数功能: 关闭所有文件,终止正在执行的程序
一般调用形式: void exit(int status);
所在头文件:stdlib.h
说明:
exit(1)表示异常退出.这个1是返回给操作系统的不过在DOS好像不需要这个返回值exit(x)(x不为0)都表示异常退出
exit(0)表示正常退出
参数: status //程序退出的返回值.
5.实验结果
(1)编译、运行:
(2)结果
5. 实验小结
经过此次的实验,实现了如何在Linux操作系统中如何使用文件的调用,巩固了文件系统调用的函数和参数的各代表的意义。