write блокирует текущий поток при попытке записать что-либо в мастер pty

Создаю мастера и раба с помощью openpty(&master, &slave, name, NULL, NULL) после чего использую master как поток вывода и записываю большое количество инфы с помощью write. Проблема в том, что при достижении некоего лимита (по видимому заполнение буффера) write блокирует текущий поток пока из slave не будет прочитана информация. Информация быстро устаревает и меня такое поведение программы не устраивает: если информация не была прочитана, то она должна быть просто проигнорирована. Как это сделать?


Ответы (1 шт):

Автор решения: Andrej Levkovitch

Собственно нашел решение порывшись немного в документации. Для того чтобы write не блокировал поток необходимо поставить мастер в non-blocking mode. Для этого можно использовать функцию fcntl:

int flags = fcntl(master, F_GETFL, 0);
flags |= O_NONBLOCK;
fcntl(master, F_SETFL, flags);
→ Ссылка