Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<unistd.h>
- #include<sys/ipc.h>
- #include<sys/msg.h>
- #include<sys/types.h>
- #include<stdlib.h>
- #include<sys/wait.h>
- #include<string.h>
- struct msgbuf {
- long mtype;
- char mtext[20];
- };
- void potomek(int id_kolejki, struct msgbuf bufor1){
- int rozmiar = sizeof(bufor1.mtext);
- printf("Id kolejki %d\n", id_kolejki);
- bufor1.mtype=1;
- strncpy(bufor1.mtext, "Dziala",19);
- int wysylanie = msgsnd(id_kolejki, &bufor1, rozmiar, 0);
- if(wysylanie == -1){
- perror("Blad wysylania");}
- exit(0);
- }
- void rodzic(int id_kolejki,struct msgbuf bufor1, struct msgbuf bufor2){
- int rozmiar = sizeof(bufor1.mtext);
- if(msgrcv(id_kolejki, &bufor2, rozmiar, 1, 0)==-1)
- perror("Blad odbioru");
- printf("Odebrany komunikat: %s\n", bufor2.mtext);
- if(msgctl(id_kolejki, IPC_RMID, 0)==-1)
- perror("Blad zamykania kolejki");
- if(wait(0)<0)
- perror("wait");
- }
- int main(void)
- {
- int id_kolejki;
- struct msgbuf bufor1, bufor2;
- id_kolejki = msgget(IPC_PRIVATE, 0600);
- int pid = fork();
- if(pid == 0)
- {
- potomek(id_kolejki, bufor1);
- }
- else {
- rodzic(id_kolejki, bufor1, bufor2);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement