实验十一 文件管理

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

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

三、实验目的:

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

2.  本周大课内容回顾

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

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

四、实验的步骤和方法:

 

第十一次小课 文件管理

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

 

第二部分实验内容

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

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

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

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

#include<stdio.h>
#include<fcntl.h>
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个字符,再从标准输出显示。

#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
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在文件中查找

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

 

a.c

abcdefghijklmnopqrstuvwxyz


 

 

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
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;	
}


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值