tcinject()

Вставить символы во входной буфер устройства

Прототип:

#include <termios.h>
int tcinject( int fd,
char *buf,
int n );

Аргументы:

fd
Файловый дескриптор, связанный с устройством, во входной буфер которого необходимо добавить символы.
buf
Указатель на буфер, содержащий символы, которые нужно вставить.
n
Количество символов для вставки. Если n положительное, символы записываются в обработанную очередь. В противном случае символы записываются в необработанную очередь.

Библиотека:

libc

Описание:

Функция tcinject() вставляет n символов, на которые указывает buf, во входной буфер устройства, указанного в fd.

Обратите внимание, что при вводе в обработанную очередь редактирование символов в buf выполняется так, как если бы пользователь вводил их непосредственно с устройства. Если не содержит новой строки (‘\n’), возврат каретки (‘\r’) или символ пересылки данных, такой как EOF, данные не становятся доступными для чтения. Если в buf содержится символ пересылки данных, то он должен быть единственный и последний в буфере buf.

Эта функция полезна для реализации алгоритмов вызова командной строки путем вставки запомненных строк в обработанную очередь.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EBADF
Некорректный аргумент fd.
ENOSYS
Данная функция не поддерживается выбранным устройством.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
int main( void )
{
char *p = "echo Hello world!\n";
/* Inject the line all at once */
tcinject( 0, p, strlen( p ) );
/* Inject the line one character at a time */
while ( *p )
tcinject( 0, p++, 1 );
return (EXIT_SUCCESS);
}

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да




Предыдущий раздел: Описание API системной библиотеки