⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 semprod.c

📁 word count information using message queues
💻 C
字号:
/*gcc -o pro semcons.c./prothis is better otherwise some error is comingipcs     ;;;;  ipcrm -S key ;;;;   to remove semaphore*/#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"               #define SEM1 0#define SEM2 1union semun	{	int val;	struct semid_ds *buf ;	ushort *array;	};int main(){printf("sayooj sdfsd\n");struct sembuf acquire = {0 ,-1 ,SEM_UNDO}; struct sembuf release = {0 ,1,SEM_UNDO};static ushort sem1sem2[2]={1, 0};union semun arg;//arg.array[1]=0;key_t uniqkey;uniqkey=ftok(".",'A');int semid=semget(uniqkey,2,IPC_CREAT|IPC_EXCL|0666);if(semid==-1)	{	printf("error in making semaphore\n");	}arg.array=sem1sem2;if(semctl(semid,0,SETALL,arg)==-1)	{	printf("error in initialization\n");	}FILE *fp;int i=0;i++;sleep(3);while(i<10)	{	printf("generated number = %d by %d \n",i,getpid());	acquire.sem_num=SEM1;	if(semop(semid,&acquire,1)==-1)		{		printf("waiting\n");		}		fp=fopen(BUF,"w");	if(fp==NULL)		{		printf("error filepointe\n");		}	fprintf(fp,"%d",i);//i++;	fclose(fp);	release.sem_num=SEM2;	printf("sent number = %d \n",i);	if(semop(semid,&release,1)==-1)		{		printf("error releasing \n");		}	sleep(2);	i++;	}sleep(5);if(semctl(semid,0,IPC_RMID,0)==-1)	{	printf("eroor in removing \n");	}return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -