Я не думаю, что это возможно. Если исходное приложение не очищает свой исходящий буфер, данные не будут выходить за пределы этого процесса, пока буфер не переполнится и очистка не будет принудительной.
Обратите внимание, что хорошо известная команда, такая как file , имеет параметр (-n), который заставляет ее явно сбрасывать вывод. Это необходимо при использовании файла в режиме, в котором он читает имена входных файлов из канала и печатает обнаруженный тип. Поскольку в этом режиме файловая программа не завершает свою работу, в противном случае выходные данные не отображаются.
Рассмотрим это на более низком уровне: выходная буферизация просто означает, что выполнение write()
в буферизованном потоке копирует данные в буфер в памяти до тех пор, пока буфер не заполнится или (как правило), пока не будет найден перевод строки. Затем часть буфера до переполнения или перевода строки записывается write()
n в базовый файловый дескриптор системного уровня (который может быть файлом, каналом, сокетом, ...).
Я не понимаю, как вы собираетесь убедить эту программу очистить свой буфер извне.