• 大小: 21KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: 文件誊抄  多进程  

资源简介

本次实验要求利用多个共享内存(有限空间)构成的环形缓冲,将源文件复制到目标文件,实现两个进程的誊抄。

资源截图

代码片段和文件信息

#include “head.h“
#include 
int main(int argc char* argv[]) {

//创建信号灯
int semid;
semid = semget(semKey 2 IPC_CREAT|0666);


//创建共享缓冲区
int shmid;
shmid = shmget(shmKey sizeof(shareBuf) IPC_CREAT|0666);
shareBuf *sBuf = (shareBuf *)shmat(shmid NULL 0);
int count = 0;
//读文件
FILE *fp;
if((fp = fopen(argv[0] “rb“)) == NULL) {
perror(“file open error\n“);
exit(1);
}
printf(“Prepare to get\n“);

int readNum = 0;
int size;

while(sBuf->over != 1) {
//执行P操作
P(semid 0);
size = fread(sBuf->data[readNum] sizeof(char) 80 fp); //读取文件内容
sBuf->length[readNum] = size;

if(size < 80) {
printf(“------reading process have get a blocking......+current_read_size:%d\n“count*80+size);
sBuf->over = 1; //当最后读取内容小于80的时候结束
} else {
count ++;
printf(“------reading process have get a blocking......+current_read_size:%d\n“count*80);
readNum = (readNum + 1) % 10;
}
//执行V操作
V(semid 1);
sleep(0.1);
}
fclose(fp);
return 0;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-12-12 12:08  文件誊抄实验\
     文件        7908  2018-12-12 12:06  文件誊抄实验\copy-test1
     文件        7756  2018-12-12 11:59  文件誊抄实验\get
     文件        1082  2018-12-12 11:58  文件誊抄实验\get.c
     文件        1071  2018-12-12 11:57  文件誊抄实验\head.h
     文件        7720  2018-12-12 12:00  文件誊抄实验\main
     文件        1028  2018-12-12 12:00  文件誊抄实验\main.c
     文件        7720  2018-12-12 11:59  文件誊抄实验\put
     文件        1333  2018-12-12 11:58  文件誊抄实验\put.c
     文件        1063  2018-12-12 12:07  文件誊抄实验\source-copy.txt
     文件        1063  2018-12-10 13:38  文件誊抄实验\source.txt
     文件        7908  2018-12-10 15:34  文件誊抄实验\test1

评论

共有 条评论