Wisdom Materials
Home
About Us
Our Clients
Careers
Services
Education
Jobs
News
Business
Health
Astrology
Entertainment
RealEstate
Devotion
Contact Us
Operating Systems Lab Manual
/ OS Producer Consumer Using Message passing C Program
Program Name
Write a C Program for use of Producer Consumer Using Message passing in Opearting System.
Theory
Program Code
Copy Program Code
#include
#include
#include
#include
#include
void down(int k); void up(int k); struct msgbuf { long mtype; char mtext[50]; } msg1,msg2; int main() { int pid,sid,msqid,i=0,j=0; char *ptr; sid=semget((key_t)110,1,IPC_CREAT | 0666); msqid=msgget((key_t)415,IPC_CREAT | 0666); semctl(sid,0,SETVAL,1); // printf("\n sem val = %d \n",semctl(sid,0,GETVAL,0)); pid=fork(); if(pid==0) while(i<3) { down(sid); printf("\n Producer CP "); msg1.mtype=1; printf("enter a string \n"); scanf("%s", msg1.mtext); // strcpy(msg1.mtext,"hello"); msgsnd(msqid,&msg1,sizeof(msg1),0); i++; up(sid); sleep(1); } else while(j<3) { down(sid); msgrcv(msqid,&msg2,sizeof(msg2),1,0); printf("\n Consumer PP %s",msg2.mtext); j++; up(sid); sleep(1); } msgctl(msqid,IPC_RMID,0); semctl(sid,0,IPC_RMID,0); return 0; } void down(int k) { struct sembuf aobj; aobj.sem_num=0; aobj.sem_op=-1; aobj.sem_flg=0; semop(k,&aobj,1); } void up(int k) { struct sembuf bobj; bobj.sem_num=0; bobj.sem_op=1; bobj.sem_flg=0; semop(k,&bobj,1); }
Input:
Output:
Home
Back