На моей машине Ubuntu была запущена программа (valgrind, на самом деле) и перенаправлена как stdout, так и stderr в разные файлы. Я был удивлен, увидев короткое сообщение на экране - как это возможно? Как я мог сделать это сам в программе на С++?
EDIT: Здесь используется команда, и вывод:
$ valgrind ./myprogram > val.out 2> val.err
*** stack smashing detected ***: ./myprogram terminated
EDIT2: играя с ним немного больше, оказывается, что myprogram, а не valgrind, вызывает печать сообщения, и, как сказано ниже, похоже, что код обнаружения разлома gcc-стека печатает на/dev/tty