📄 semcons.c~
字号:
#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/sem.h>#include<string.h>#define BUF "temp" //check this#define SEM1 0#define SEM2 1union semun { int val; struct semid_ds *buf ; ushort *array; };int main(){printf("sayooj\n");struct sembuf acquire ={0,-1,SEM_UNDO};struct sembuf release ={0,1,SEM_UNDO};key_t uniqkey;uniqkey=ftok(".",'A');int semid=semget(uniqkey,2,0); //dont create it again .open already existingif(semid==-1) { printf("error in making semaphore\n"); } FILE *fp;int i=0;while(1){//printf("generating %d \n",i);acquire.sem_num=SEM2;if(semop(semid,&acquire,1)==-1) { printf("waiting for producer to make something new \n"); }fp=fopen(BUF,"r");if(fp==NULL) { printf("error filepointe\n"); }fscanf(fp,"%d",&i);//i++;fclose(fp);release.sem_num=SEM1;printf("number read %d by %d\n",i,getpid());if(semop(semid,&release,1)==-1) { printf("no more numbers seen \n"); exit(1); }sleep(1);}return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -