Untitled
unknown
plain_text
2 years ago
1.1 kB
5
Indexable
Never
#include<sys/types.h> #include<sys/ipc.h> #include<sys/msg.h> #include<stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/wait.h> struct msqid_ds *buf; //zmienna przez ktora przekazywane sa parametry operacji struct msgbuf { //struktura komunikatu long mtype; //typ komunikatu char *mtext; //tresc komunikatu }; struct msgbuf bufor1, bufor2; int main() { int id_msgget; //identyfikator kolejki char *wiadomosc = "message ..."; //tresc komunikat int rozmiar = sizeof(struct msgbuf) - sizeof(bufor1.mtype); //rozmiar komunikatu pid_t pid; id_msgget = msgget(IPC_PRIVATE, IPC_CREAT|0600); if ((pid = fork()) == 0) { //potomek printf("Id msgget %d\n", id_msgget); bufor1.mtype = 1; //typ komunikatu bufor1.mtext = wiadomosc; //tresc komunikatu int wysylanie = msgsnd (id_msgget, &bufor1, rozmiar, 0); //wyslanie komunikatu if (wysylanie == -1) perror("Blad wyslania"); exit(0); } else { //rodzic wait(0); msgrcv(id_msgget, &bufor2, rozmiar, 1, 0); //odebranie komunikatu printf("Odebrany komunikat: %s\n", bufor2.mtext); msgctl(id_msgget, IPC_RMID, buf); //usuniecie kolejki return 0; } }