📄 shrdmem.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 + -