Всем привет! Есть некоторая программа1 на си, которая обрабатывает команды от оператора в терминале линукса, отправляет их программе2 на эрланге и получает ответ в виде строки «event1\event2\nevent3\n...eventN». Далее эта строка записывается в stdout:
fwrite(ERL_BIN_PTR(data), 1, size, stdout);
И оператор должен увидеть красивый построчный вывод команды в терминале. И всё бы хорошо, но почему-то периодически пара строк перетирается последующими строками. Всего в выводе больше 200 строк, но перетираются только две конкретные. Насколько я себе это представляю, терминал должен заменять LF-символ (\n) на CRLF (это описано на вики http://en.wikipedia.org/wiki/Line_discipline). Однако, для упомянутых выше строк вставляется только CR, благодаря чему каретка не переводится вниз, и следующая строка печатается поверх текущей. Причем, если перенаправить вывод в файл, или грепать эту строку, то всё отображается полностью. Кто-то сталкивался с подобным? Есть еще вариант посмотреть побайтово, что программа1 получает от эрланга. Возможно, я просто не вижу в редакторе некоторые специальные символы, которые ломают вывод, но более вероятным кажется, что проблема в терминале.