rendered paste body#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/msg.h>#include <signal.h>#include <sys/stat.h>typedef struct { union { struct { char ident[8]; char wiad[24]; }; int ilosc; }; int valid:1;} wiadomosc;int main(int argc, char **argv) { struct{ long int mtype; wiadomosc wiad; } mymsg; if (argc < 4) { fprintf (stderr,"Usage: %s shid ident (1 | 2 | 3) [wiad | n]\n",argv[0]); return -1; }; int qid = atoi(argv[1]); if (qid == 0) { fprintf (stderr,"%s: wrong ident\n",argv[0]); return -1; }; int tryb = atoi(argv[3]); if (tryb == 1) { if (argc < 5) { fprintf (stderr,"%s: no message\n",argv[0]); return -1; } strncpy(mymsg.wiad.wiad,argv[4],24); mymsg.wiad.wiad[23]=0; strncpy(mymsg.wiad.ident,argv[2],8); mymsg.wiad.ident[7]=0; mymsg.mtype = 1; } else if (tryb == 2) { strncpy(mymsg.wiad.ident,argv[2],8); mymsg.wiad.ident[7]=0; mymsg.mtype = 2; } else if (tryb == 3) { if (argc < 5) { fprintf (stderr,"%s: no number of messages\n",argv[0]); return -1; } mymsg.wiad.ilosc = atoi(argv[4]); mymsg.mtype = 3; } else { fprintf (stderr,"%s: wrong mode\n",argv[0]); return -1; }; if (msgsnd(qid,&mymsg,sizeof(wiadomosc),0)!=0){ perror("msgsnd"); return -1; }; return 0;}