Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/msg.h>
- #define BUFFSIZE 256
- typedef struct{
- long type;
- char data[BUFFSIZE];
- } message_t;
- int MQ;
- void grandkiddyscode(){
- message_t sendMessage;
- sendMessage.type = 100L;
- strcpy(sendMessage.data, "LOS GEHTS!");
- msgsnd(MQ, &sendMessage, BUFFSIZE, 0);
- strcpy(sendMessage.data, "LOS GEHTS ZUM ZWEITEN!");
- msgsnd(MQ, &sendMessage, BUFFSIZE, 0);
- strcpy(sendMessage.data, "Das wars");
- msgsnd(MQ, &sendMessage, BUFFSIZE, 0);
- }
- void kiddyscode(){
- pid_t i = fork();
- switch(i){
- case -1:
- printf("ERROR: fork()\n");
- exit(1);
- case 0:
- grandkiddyscode();
- exit(0);
- break;
- default:
- break;
- }
- message_t receiveMessage;
- do {
- msgrcv(MQ, &receiveMessage, BUFFSIZE, 100L, 0);
- printf("kiddyscode hat empfangen: %s\n", receiveMessage.data);
- } while(strncmp(receiveMessage.data, "Das wars", 8));
- }
- int main()
- {
- MQ = msgget(IPC_PRIVATE, 0660);
- int i = fork();
- switch(i){
- case -1:
- printf("ERROR: fork()");
- exit(1);
- case 0:
- kiddyscode();
- exit(0);
- break;
- default:
- wait(0);
- break;
- }
- int success = msgctl(MQ, IPC_RMID, 0);
- if(success == -1){
- printf("ERROR: msgctl() - Could not remove message queue!");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement