REX
НАЗВАНИЕ
rex - Протокол удаленного выполнения
СИНТАКСИС
#include <rpcsvc/rex.h>
ОПИСАНИЕ
Сервер удаленного исполнения команд. Допускается указание рабочего каталога и параметров среды выполнения команды, а также
переопределение стандартного ввода и вывода команды. Возможно
осуществление интерактивного ввода-вывода для тех программ, которые запускаются с терминалов. Работает только с протоколом TCP.
Информация о RPC:
Код (номер) программы:
REXPROG
подпрограммы xdr:
int xdr_rex_start(xdrs, start);
XDR *xdrs;
struct rex_start *start;
int xdr_rex_result(xdrs, result);
XDR *xdrs;
struct rex_result *result;
int xdr_rex_ttymode(xdrs, mode);
XDR *xdrs;
struct rex_ttymode *mode;
int xdr_rex_ttysize(xdrs, size);
XDR *xdrs;
struct rex_ttysize *size;
процессы:
- REXPROC_START
-
Принимает структуру rex_start, запускает исполнение команды и возвращает структуру rex_result.
- REXPROC_WAIT
-
Аргументов не имеет, ожидает завершения выполнения команды, возвращает структуру rex_result.
- REXPROC_MODES
-
Принимает структуру rex_ttymode и пересылает режимы работы терминала.
- REXPROC_WINCH
-
Принимает структуру ttysize и пересылает информацию о
размерах окна.
версии:
- REXVERS_ORIG
- Первоначальная версия
структуры:
struct B_sgttyb {
char bsg_ispeed; /* скорость ввода */
char bsg_ospeed; /* скорость вывода */
char bsg_erase; /* символ стирания */
char bsg_kill; /* символ удаления */
short bsg_flags;
};
struct tchars {
char t_intrc; /* прерывание */
char t_quitc; /* выход */
char t_startc; /* запуск вывода */
char t_stopc; /* останов вывода */
char t_eofc; /* конец файла */
char t_brkc; /* разделитель ввода */
};
struct ltchars {
char t_suspc; /* сигнал остановки
процесса */
char t_dsuspc; /* отложенный сигнал
остановки процесса */
char t_rprntc; /* повторный вывод строки */
char t_flushc; /* вывод потоком (ключи) */
char t_werasc; /* стирание слова */
char t_lnextc; /* следующий символ */
};
#define REX_INTERACTIVE 1 /* интерактивный режим */
struct rex_start {
char **rst_cmd; /* список команд и аргумен-
тов */
char *rst_host; /* имя рабочего каталога
host'а */
char *rst_fsname; /* имя каталога файловой
системы */
char *rst_dirwithin; /* каталог внутри файловой
системы */
char **rst_env; /* список параметров выполне-
ния */
ushort rst_port0; /* порт для stdin */
ushort rst_port1; /* порт для stdin */
ushort rst_port2; /* порт для stdin */
ulong rst_flags; /* опции - см. #define выше */
};
struct rex_result {
int rlt_stat; /* целочисленный код состоя-
ния */
char *rlt_message; /* строка сообщения */
};
struct rex_ttymode {
struct B_sgttyb basic; /* флаги для терминала в UNIX
версии Berkeley */
struct tchars more; /* прерывание, удаление и
т.д. */
struct ltchars yetmore; /* специальные символы в
Berkeley */
ulong andmore; /* режимы Berkeley */
};
struct ttysize {
int ts_lines; /* количество строк на экране
терминала */
int ts_cols; /* количество столбцов на экране
терминала */
};
СМ. ТАКЖЕ
rexd(8)