实 验 5 Linux 文 件 操 作 之 带 缓 存 和 非 缓 冲 文 件 的 读 写
学生姓名:王祥真 学号: 6103114095 专业班级: 计科 143
实验类型: □ 验证 ? 综合 □ 设计 □ 创新 实验日期 : 2017.4.20 实验成绩:
一.实验目的
通过编写文件读写及上锁的程序,进一步熟悉 Linux 中文件 I/O 相关的应用开
发, 并且熟练掌握 open() 、read() 、write() 、fcntl() 等函数的使用。
二.实验内容
1. 用 write, read, open 等系统调用编写分别实现如下功能的程序(要求进行
必要的出错检查) :
(1) 创建一个文件 testfile.txt ,文件内容从键盘输入 ;
(2) 将 testfile.txt 的内容显示在屏幕上 , 并将 testfile.txt 的内容复制到一个
新的文件 file2.txt 中。
实验代码:
#include
#include
#include
#include
#include
#include
#include
#include
int main()
{
int fd, fdsrc,fddes,nbytes;
int newret ,n1,n2;
int flags=O_CREAT | O_TRUNC | O_WRONLY;
char src[50],des[30],buf[30];
char str1[60];
char str2[60];
strcat(str1,"cat ");
printf(" 请输入要创建的源文件名字 ");
scanf("%s",src);
fd=creat(src,S_IRUSR|S_IWUSR); // 创建源文件
n1=read(STDIN_FILENO,buf,80);
if(n1<0){
perror("read STDIN_FILENO");
exit(1);
}
fdsrc=open(src,flags,0644); // 以读写方式打开
if(fdsrc<0){
exit(1);
}
精选文库
write(fdsrc,buf,n1);// 写入
printf(" 输出刚创建源文件的内容 \n");
strcat(str1,src);//cat src;
newret=system(str1);// 执行命令
close(fdsrc);// 关闭指针
printf(" 请输入目标文件名 : ");
scanf("%s",des);
fd=creat(des,S_IRUSR|S_IWUSR);
fdsrc=open(src,O_RDONLY);
if(fdsrc<0){
exit(1);
}
fddes=open(des,flags,0744);
if(fddes<0){
exit(1);
}
while((nbytes=read(fdsrc,buf,20))>0){
int z=write(fddes,buf,nbytes);
if(z<0){
perror(" 写文件出错 ");
}
}
close(fdsrc);
close(fdde