实验十一 文件管理

一、实验名称:实验十一文件管理

二、实验日期:2014/5/8

三、实验目的:

1.  资源管理实验课主要内容

2.  本周大课内容回顾

3.  通过实验掌握OS中资源分配的银行家算法的应用

4.  通过实验掌握在OS中通过信号量解决资源分配问题

四、实验的步骤和方法:

 

第十一次小课 文件管理

第一部分本周大课内容回顾

 

第二部分实验内容

实验1:文件的打开与关闭

创建两个文件file1和file2,输出他们的文件标识符后关闭。

关闭0#和2#文件标识符后,再重新打开文件file1和file2,输出他们的文件标识符后关闭。

理解打开文件的系统调用命令,以及文件标识符的分配。

实验十一 文件管理_第1张图片

#include
#include
main()
{
	int fd1, fd2;
	fd1 = open("file1", O_WRONLY|O_TRUNC|O_CREAT, 0666);//创建file1
	fd2 = open("file2", O_WRONLY|O_TRUNC|O_CREAT, 0666);//创建file2
	printf("First: fd1 = %d, fd2 = %d\n", fd1, fd2);//显示file1、file2标识符
	close(fd1);//关闭file1
	close(fd2);//关闭file2
	close(0);//关闭stdin
	
	fd1 = open("file1", O_WRONLY);//再次以只写方式打开文件file1
	close(2);//关闭stderr
	fd2 = open("file2", O_RDONLY);//再次以只读方式打开文件file2
	printf("Second: fd1 = %d, fd2 = %d\n",fd1, fd2);//显示file1、file2标识符
}

 

实验2:文件的读写

 

编写程序实现从标准输入读取最多128个字符,再从标准输出显示。

实验十一 文件管理_第2张图片

#include
#include
#include
main()
{
	char buffer[128];
	int num;
	num = read(0, buffer, 128);//从标准输入读取最多128个字符
	if((write(1, buffer, num)) != num)
		write(2, "A write error has occurred.\n", 27);//从标准输出显示
	exit(0);
}

 

 

 

理解文件读、写系统调用

 

实验3:文件的随机查找

 

假设当前目录下有文件a.c,其内容是26个英文字母。编写一程序移动指针到第10个字符,使其从第11个字符开始输出,直到最后一个字符。

分析:

先通过open打开文件

再通过lseek在文件中查找

再通过循环逐个字符读并输出

实验十一 文件管理_第3张图片 

a.c

abcdefghijklmnopqrstuvwxyz


 

 

#include 
#include 
#include 
#include 
#include 
int main()
{
	int fd_src;
	int fd_dest;
	char buff;
	int count;
	fd_src=open("./a.c",O_RDONLY);
	if(fd_src<0)
	{
		perror("Failed to open a.c");
		return -1;
	}	
	lseek(fd_src,-17,SEEK_END);
	for(count=0;count<17;count++)
	{
		read(fd_src,&buff,1);
		printf("%c",buff);
	}	
	close(fd_src);	
	return 0;	
}


 

 

你可能感兴趣的:(OS)