LINUX.ORG.RU

читать её stodut/stderr

anonymous
()

Перенаправляешь выхлоп на свою программу. При получении новой строки печатешь саму строку + время.

observer ★★★
()

просто через чтение скорее всего никак. Буфферизация и т.п. съест сам х. Только разве что strace'ом смотреть когда она делает соответствующие системные вызовы, или через LD_PRELOAD подменять библиотечные ф-ии и смотреть прямо там.

mashina ★★★★★
()
Ответ на: комментарий от AlexCones

Скорее будет, как говорит mashina: буфферизация съест сам х если он ничтожно мал.

observer ★★★
()
Ответ на: комментарий от AlexCones

См. выше, что пишет mashina. Он умный.

Deleted
()

Запускай из своей программы по методу fork-exec, предварительно обрубив буферизацию для ввода-вывода. Хотя, есть ещё буферизация на уровне библиотек (скажем, в с++). И с ней как бороться не знаю. Разве что собрать отдельную версию libstdc++ с вырубленной буферизацией и через LD_PRELOAD.

С другой стороны, если буферизация на уровне библиотеки используется, то задержка между выводом двух out'ов скорее всего объясняется инертностью терминала =)

ssvda
()

tee with timestamps: http://linux.softpedia.com/get/Utilities/super-tee-26301.shtml

Ну или свой костыль напиши.

Но на счёт миллисекундой точности я не уверен. Может правда strace юзать, он умеет логгировать события на определённых дескрипторах (тебе stdout и stderr нужны). Или systemtap...

true_admin ★★★★★
()

Универсальный вариант — ptrace. То бишь, запустить программу под дебаггером и отслеживать системные вызовы. http://www.linuxjournal.com/article/6100

Miguel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.