【发布时间】:2015-07-10 02:40:16
【问题描述】:
我在我的 Ubuntu 机器上运行一个程序(实际上是 valgrind),并将 stdout 和 stderr 重定向到不同的文件。我惊讶地看到屏幕上出现一条短消息——这怎么可能?我怎么能自己在 C++ 程序中做到这一点?
编辑:这是我使用的命令和输出:
$ valgrind ./myprogram > val.out 2> val.err
*** stack smashing detected ***: ./myprogram terminated
EDIT2:再玩一点,结果是 myprogram 而不是 valgrind 导致了消息被打印,如下面的回答,看起来 gcc 堆栈粉碎检测代码正在打印到 /dev/tty
【问题讨论】:
-
你能分享你使用的命令吗
-
直接打开显示设备。例如
echo 'foo' > /dev/pts/0 -
好像是内核给的消息
-
打开并写信给
/dev/tty;删掉的答案其实是最简洁的。