All pastes #564414 Raw Edit

SOE lab6 - cl.c

public c v1 · immutable
·published 2007-06-13 16:12 UTC
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;}