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

📄 shrdmem.c

📁 word count information using message queues
💻 C
字号:
/*REMEBER TO RUN IPCRM TO REMOVE THE SHAREDMEM AFTER EXECUTION...*/#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<sys/shm.h>#include<sys/sem.h>#include<sys/ipc.h>#include<string.h>#define SIZE 1000union semun 	{	int val;	struct semid_ds *buf;	ushort *array;	}arg;int main(){printf("sa\n");char *msg;key_t uniqkey;uniqkey=ftok(".",'J');int shmid,semid;shmid=shmget(uniqkey,SIZE,IPC_CREAT |0644);		//CREATING SHREDMEMORY	if(shmid==-1)	{	printf("error in creating shared memory \n");	}msg=shmat(shmid,(void *)0,0);				//sharedmemory pointer is msgsemid=semget(uniqkey,2,IPC_CREAT|IPC_EXCL|0666);if(semid==-1)	{	printf("error in making semaphore \n");	}struct sembuf acquire={0,-1,SEM_UNDO};struct sembuf release={0, 1,SEM_UNDO};static ushort initial[2]={1,0};arg.array=initial;if(semctl(semid,0,SETALL,arg)==-1)	{	printf("error in assignment \n");	}int ch=0;while(ch<5){acquire.sem_num=0;if(semop(semid,&acquire,1)==-1)	{	printf("error in acquiring \n");	}printf("enter some text : \n");fgets(msg,/*sizeof(msg)*/SIZE,stdin);		//******i  dont know y sizeof(msg) is not working *********printf("msg sent : %s \n",msg);release.sem_num=1;if(semop(semid,&release,1)==-1)	{	printf("error in releasing \n");	}//sleep(7);ch++;}sleep(5);if(shmdt(msg)== -1)	{	printf("error in detaching \n");	}// if(shmctl(shmid,IPC_RMID,(struct shmid_ds *)0)==-1)// 	{					//when i do this ipcs shows some 000000....thing which iam unable to remove// 	printf("error in removing shared memory \n");	// 	}if(semctl(semid,0,IPC_RMID)==-1)	{	printf("error in removing semaphore \n");	}//*********remember to run ipcrm  to delete the sharedmemory*********return 0;}

⌨️ 快捷键说明

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