Я пишу приложение, которое использует GnuPlot для построения данных.Вместо того, чтобы использовать текстовый формат для соединения обеих программ через канал (это медленно из-за vprintf () и большого объема передаваемых данных), я решил использовать «двоичный» формат.
Проблема в том, чтов двоичном формате GnuPlot ожидает, что EOF (Ctrl + D) завершит передачу и отобразит данные.Это легко в режиме консоли UNIX.Простое нажатие клавиш Ctrl + D завершит ввод данных, отобразит данные и откроет консоль в ожидании новых команд.
Но в моем приложении на C ++ единственный способ отправить EOF - закрыть канал.Это приводит к тому, что процесс gnuplot умирает и не отображает график на экране.
t Есть ли хитрость для отправки EOF в канал?¿Как терминалу UNIX удается отправить EOF без закрытия канала с запущенным процессом?
PD: я не могу закрыть и снова открыть GnuPlot с помощью «-persist», потому что это генерирует НОВЫЙ график вместоОбновление старого графика (это система реального времени, поэтому она генерирует окна около ~ inf).