// Очереди сообщений SystemV в Linux // Программа из учебника "Системное программирование в среде Linux", Гунько А.В., стр. 91 // Название: msgrcv.c // Описание: чтение сообщения с разными типами // и обходом блокировки //svmsg/msgrcv.c #include #define MAXMSG (8192 + slzeof(long)) int main(int argc, char **argv) { int c, flag, mqid; long type; ssize_t n; struct msgbuf *buff; type = flag = 0; while ( (c = getopt(argc, argv, "nt:")) != -1) { switch (c) { case 'n': flag |= IPC_NOWAIT; break; case 't': type = atol(optarg); break; } } if (optind != argc - 1) err_quit("usage: msgrcv [ -n ] [ -t type ] "); mqid = msgget(ftok(argv[optind], 0). MSG_R); buff = mallОС(MAXMSG); n = msgrcv(mqid, buff, MAXMSG, type, flag); pnntf("'read %d bytes, type = %ld\n", n, buff->mtype); exit(0); }