// Программа из конспекта "Системное программное обеспечение" // Очереди сообщений в Linux // стр. 109 // Название: client.c // Описание: функция клиента клиент-серверной системы // на основе индивидуальных очередей с мультиплексированием //svmsgmpx2q/client.с #include "mesg_send.c" #include "mesg_recv.c" void client(int readid, int writeid) { size_t len; ssize_t n; char *ptr; struct mymesg mesg; /* инициализируем буфep идентификатором очереди */ snprintf(mesg.mesg_data, MAXMESGDATA, "%d ", readid); len = strlen(mesg.mesg_data); ptr = mesg.mesg_data + len; /* считываем имя файла */ fgets(ptr, MAXMESGDATA - len, stdin); len = strlen(mesg.mesg_data); if (mesg.mesg_data[len-1] == '\n') len--; /* удаляем перевод строки fgets()*/ mesg.mesg_len = len; mesg.mesg_type = 1; /* отправляем идентификатор очереди и имя файла серверу */ mesg_send(writeid, &mesg); /* считываем ответ из нашей очереди и записываем в stdout */ while ( (n = mesg_recv(readid, &mesg))> 0) write(STDOUT_FILENO, mesg.mesg_data, n); }