额,生产者消费者这个问题应该不算少见,如果是用程序还是蛮简单的吧,但是如果是叫用进程间通信,分析进程争用资源的现象,解决进程互斥。。。dbq,我承认我划水了,用共享内存来实现的,曲解一下题意,为了更快地完成作业(上天保佑老师不懂程序,不懂任务。。。)
借鉴学习了https://blog.csdn.net/qq_27664167/article/details/81277096,也就是各个函数的用法。至于思想的话,dbq,偶是个傻子。。。
有小姐姐表示看不懂我的程序,自己瞎定义的变量、函数名什么的太多了。唔,这个是按自己的风格来的,自己能看懂,other可能看不太懂,但毕竟是小姐姐嘛,还是要稍微照顾一下的(???程序又不对,说什么的,不祸害人的嘛)
#include <stdio.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <signal.h>
#include <wait.h>
#include <time.h>
#include <stdlib.h>
#define MAX_LEN 5//生产者最多生产的数量
#define TIME 20 //alarm时钟的时间,主程序运行20s,退出
#define CONSUME_TIME_LIMIT 1000 //随机consume生产时间,用来对rand取模
#define CONSUME_SPEED 500 //时间底限,consume生产时间最少500ms
#define PRODUCE_TIME_LIMIT 2 //produce消费时间,单位s
#define PRODUCE_SPEED 1
typedef struct shmInfo{//用两下标,模拟数组
int head_index;//头,生产者产生的产品
int tail_index;//尾,消费者消费的产品
}shmInfo;
int wait_flag = 0;//使pro