预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共92页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

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

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_SIZE 1024 /*每次读写缓存大小,影响运行效率*/ #defineSRC_FILE_NAME"src_file" /*源文件名*/ #defineDEST_FILE_NAME"dest_file“/*目标文件名文件名*/ #defineOFFSET 10240 /*拷贝的数据大小*/ 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*/