[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Передача данных - Интерфейс чтения/записи - Пример

Пользователь может организовать транспортное соединение и через
exec(2) вызвать существующую утилиту - например cat(1), sort(1) или
pr(1) для обработки приходящих данных. TLI напрямую не поддерживает
интерфейс чтения/записи с транспортным протоколом, но этот вариант
поставляется с ОС UNIX System V. Интерфейс доступен только после
установления режима с соединением.
В этом примере, клиент проходит через все этапы, предшествующие
передаче данных (открытие транспортной точки, связывание с адресом
и соединение с сервером), но не начинает ее. Необходим файл
заголовка <stropts.h>, поскольку эта программа будет действовать
через STREAMS-устройство, являющееся транспортной точкой. Клиент
вызывает интерфейс чтения/записи перемещением модуля tirdwr(5) в
STREAM, ассоциированный с транспортной точкой.
Модуль tirdwr может быть перемещен в STREAM, когда транспортная
точка находится в фазе передачи данных. После перемещения модуля
никакой модуль TLI не может быть использован.
                          ПЕРЕДАЧА ДАННЫХ
                 ИНТЕРФЕЙС ЧТЕНИЯ/ЗАПИСИ - ПРИМЕР

#include <stropts.h>
 . . .
     /* Create endpoint and connect to server */
     if(ioctl(fd, I_PUSH, "tirdwr") < 0) {
          perror("I_PUSH of tirdwr failed");
          exit(5);
     }
     close(0);
     dup(fd);
     execl( "/bin/pr", "/bin/pr", "-n", "-t", 0);
     perror("exec failed");
     exit(6);
}