Отключите буферизацию строки в TTY, но держите Ctrl + D включенным - PullRequest
0 голосов
/ 19 декабря 2018

По умолчанию TTY находится в каноническом режиме, что означает, что он буферизует полученные данные до тех пор, пока не получит конец строки или конец файла (по умолчанию Ctrl + D).Однако размер буфера составляет всего 4096 байт, поэтому, если я посылаю большое количество данных процессу через TTY, я вынужден записывать куски размером менее 4096 байт, а затем Ctrl + D.Это замедляет мою программу.

Я могу отключить буферизацию строки, установив TTY в необработанный режим, но в необработанном режиме он больше не реагирует на конец файла, а напрямую отправляет мои Ctrl + D удаленному процессу, который обрабатывает егокак и любой другой байт.Поэтому я не могу указать процессу, который завершил поток данных.

Я знаю, что у TTY есть настройка, при которой даже в режиме raw он реагирует на символ прерывания (Ctrl + C).Это не подходит, потому что если я отправлю Ctrl + C, удаленный процесс может получить SIGINT и умереть перед обработкой всех данных, которые были до этого.

Что я действительно хочу, чтобы TTY не буферизовал данныено отправьте его непосредственно процессу, и как только я отправлю Ctrl + D, я хочу, чтобы он отправил EOF для обработки.Как мне этого добиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...