[<<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);
}