Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Przykład 2
- #include<stdio.h>
- #include<sys/ipc.h>
- #include<sys/msg.h>
- #include<sys/types.h>
- struct msgbuf {long type;
- char mtext[50];
- void receive_message(int mqid)
- struct msgbuf buffer;if(msgrcv(mqid,&buffer,sizeof(buffer.mtext),1,0)<0)
- }; {
- else
- int main(void) {
- perror("msgrcv");
- printf("Odebrany komunikat: %s\n",buffer.mtext);
- }
- int key = ftok("/tmp",8);if(key<0)
- perror("ftok");
- int id = msgget(key,0600|IPC_CREAT|IPC_EXCL);if(id<0)
- perror("msgget");
- receive_message(id);
- if(msgctl(id,IPC_RMID,0)<0) perror("msgctl");
- return 0;
- }
- Pytanie 2
- Zakończone
- Nie oceniono
- Nie oznaczony flagąOflaguj pytanie
- Treść pytania
- Przykład 3
- #include<stdio.h>
- #include<string.h>
- #include<sys/ipc.h>
- #include<sys/msg.h>
- #include<sys/types.h>
- #define TEXT_LENGTH 50
- struct msgbuf {long type;
- char mtext[TEXT_LENGTH];
- void send_message(int mqid, char message[])
- }; {
- struct msgbuf buffer;
- buffer.type = 1; memset(buffer.mtext,0,sizeof(buffer.mtext)); strncpy(buffer.mtext,message,TEXT_LENGTH-1);
- if(msgsnd(mqid,&buffer,sizeof(buffer.mtext),0)<0) perror("msgsnd");
- }
- int main(void) {
- int key = ftok("/tmp",8);if(key<0)
- perror("ftok");
- int id = msgget(key,0600);if(id<0)
- perror("msgget"); send_message(id,"Systemy Operacyjne");return 0;
- }
- Pytanie 3
- Zakończone
- Nie oceniono
- Nie oznaczony flagąOflaguj pytanie
- Treść pytania
- Zad 1
- #include<sys/types.h>
- #include<sys/ipc.h>
- #include<sys/msg.h>
- #include<stdio.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
- id_msgget = msgget(IPC_PRIVATE, IPC_CREAT|0600);
- printf("Id msgget %d\n", id_msgget);
- bufor1.mtype = 1;//typ komunikatu
- bufor1.mtext = wiadomosc;//tresc komunikatu
- int rozmiar = sizeof(struct msgbuf) - sizeof(bufor1.mtype);//rozmiar komunikatu
- int wysylanie = msgsnd (id_msgget, &bufor1, rozmiar, 0);//wyslanie komunikatu
- if (wysylanie == -1)
- perror("Blad wyslania");
- msgrcv(id_msgget, &bufor2, rozmiar, 1, 0);//odebranie komunikatu
- printf("Odebrany komunikat: %s\n", bufor2.mtext);
- msgctl(id_msgget, IPC_RMID, buf);//usuniecie kolejki
- return0;
- }
- Pytanie 4
- Zakończone
- Nie oceniono
- Nie oznaczony flagąOflaguj pytanie
- Treść pytania
- Zad 2
- #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
- return0;
- }
- }
- Pytanie 5
- Zakończone
- Nie oceniono
- Nie oznaczony flagąOflaguj pytanie
- Treść pytania
- Zad 3
- #include<sys/types.h>
- #include<sys/ipc.h>
- #include<sys/msg.h>
- #include<stdio.h>
- struct msgbuf {//struktura komunikatu
- long mtype;//typ komunikatu
- int mnumber;//tresc komunikatu
- };
- struct msgbuf bufor;
- int main()
- {
- int id_msgget, id_ftok;//identyfikator kolejki
- id_ftok = ftok("zad3a.c",120);
- id_msgget = msgget(id_ftok, IPC_CREAT|0660);
- printf("Id msgget %d\n", id_msgget);
- bufor.mtype = 1;//typ komunikatu
- bufor.mnumber = 5;//tresc komunikatu
- int rozmiar = sizeof(struct msgbuf) - sizeof(bufor.mtype);//rozmiar komunikatu
- int wyslanie = msgsnd (id_msgget, &bufor, rozmiar, 0);//wyslanie komunikatu
- if (wyslanie == -1)
- perror("Blad wyslania");
- printf("Wyslano komunikat: %d\n", bufor.mnumber);
- return0;
- }
- Pytanie 6
- Zakończone
- Nie oceniono
- Nie oznaczony flagąOflaguj pytanie
- Treść pytania
- Zad 4
- #include<sys/types.h>
- #include<sys/ipc.h>
- #include<sys/msg.h>
- #include<stdio.h>
- struct msgbuf {//struktura komunikatu
- long mtype;//typ komunikatu
- int mnumber;//tresc komunikatu
- };
- struct msgbuf bufor;
- int main()
- {
- int id_msgget, id_ftok;//identyfikator kolejki
- int i, wyslanie;
- id_ftok = ftok("zad3a.c", 269);
- id_msgget = msgget(id_ftok, IPC_CREAT|0660);
- printf("Id msgget %d\n", id_msgget);
- bufor.mtype = 1;//typ komunikatu
- bufor.mnumber = 5;//tresc komunikatu
- int rozmiar = sizeof(struct msgbuf) - sizeof(bufor.mtype);//rozmiar komunikatu
- for(i = 0; i < 10000; i++) {
- wyslanie = msgsnd (id_msgget, &bufor, rozmiar, IPC_NOWAIT);//wyslanie komunikatu
- ++bufor.mnumber;
- }
- if (wyslanie == -1)
- perror("Blad wyslania");
- printf("Wyslano komunikat: %d\n", bufor.mnumber);
- return0;
- }
- Pytanie 7
- Zakończone
- Nie oceniono
- Nie oznaczony flagąOflaguj pytanie
- Treść pytania
- Zad 5
- #include <stdlib.h>
- #include <time.h>
- #include<sys/types.h>
- #include<sys/ipc.h>
- #include<sys/msg.h>
- #include<stdio.h>
- struct msgbuf {//struktura komunikatu
- long mtype;//typ komunikatu
- int mnumber;//tresc komunikatu
- };
- struct msgbuf bufor;
- int main()
- {
- srand(time(NULL));
- int id_msgget, id_ftok;//identyfikator kolejki
- int i, wyslanie;
- id_ftok = ftok("zad3a.c",120);
- id_msgget = msgget(id_ftok, IPC_CREAT|0660);
- printf("Id msgget %d\n", id_msgget);
- int rozmiar = sizeof(struct msgbuf) - sizeof(bufor.mtype);//rozmiar komunikatu
- for(i = 1; i < 8; i++) {
- bufor.mtype = 1+random()%5;
- bufor.mnumber = bufor.mtype;
- wyslanie = msgsnd (id_msgget, &bufor, rozmiar, IPC_NOWAIT);//wyslanie komunikatu
- if (wyslanie == -1)
- perror("Blad wyslania");
- printf("Wyslano komunikat: %d\n", bufor.mnumber);
- }
- return0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement