第6章 文件IO编程.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:92 大小:2.3MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第6章 文件IO编程.ppt

第6章文件IO编程.ppt

预览

免费试读已结束,剩余 82 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章文件I/O编程系统调用与用户编程接口(API)系统调用与用户编程接口(API)系统调用与用户编程接口(API)系统调用与用户编程接口(API)系统调用与用户编程接口(API)系统调用与用户编程接口(API)#cp/floppy/TEST/tmp/test系统调用与用户编程接口(API)第6章文件I/O编程底层文件I/O操作文件描述符函数说明函数说明函数格式(1)/*copy_file.c*/#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdlib.h>#include<stdio.h>#defineBUFFER_SIZE1024/*每次读写缓存大小,影响运行效率*/#defineSRC_FILE_NAME"src_file"/*源文件名*/#defineDEST_FILE_NAME"dest_file“/*目标文件名文件名*/#defineOFFSET10240/*拷贝的数据大小*/intmain(){intsrc_file,dest_file;unsignedcharbuff[BUFFER_SIZE];intreal_read_len;src_file=open(SRC_FILE_NAME,O_RDONLY);dest_file=open(DEST_FILE_NAME,O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);if(src_file<0||dest_file<0){printf("Openfileerror\n");exit(1);}lseek(src_file,-OFFSET,SEEK_END);while((real_read_len=read(src_file,buff,sizeof(buff)))>0){write(dest_file,buff,real_read_len);}close(dest_file);close(src_file);return0;}文件锁文件锁fcntl()函数格式(1)fcntl()函数格式(2)-flock结构lock.l_type=type;if((fcntl(fd,F_SETLKW,&lock))<0)//设置文件锁{printf("Lockfailed:type=%d\n",lock.l_type);return1;}switch(lock.l_type){caseF_RDLCK:{printf("Readlocksetby%d\n",getpid());}break;caseF_WRLCK:{printf("Writelocksetby%d\n",getpid());}break;caseF_UNLCK:{printf("Releaselockby%d\n",getpid());return1;}break;default:break;}/*endofswitch*/return0;}intmain(void){intfd;fd=open("hello",O_RDWR|O_CREAT,0644);if(fd<0){printf("Openfileerror\n");exit(1);}lock_set(fd,F_WRLCK);getchar();lock_set(fd,F_UNLCK);getchar();close(fd);exit(0);}/*read_lock.c*/……………#include"lock_set.c"intmain(void){intfd;fd=open("hello",O_RDWR|O_CREAT,0644);if(fd<0){printf("Openfileerror\n");exit(1);}lock_set(fd,F_RDLCK);getchar();lock_set(fd,F_UNLCK);getchar();close(fd);exit(0);}I/O多路复用select()和poll()select()函数格式(1)select()函数格式(2)poll()函数格式示例6-3-3-1(select)和6-3-3-2(poll)/*multiplex_select.c*/