当我这样做时
executable 2>&1 | asan_symbolize.py
其中executable
是一个C ++可执行文件,我将stdout和stderr都传递给asan_symbolize.py
(对于泄漏卫星和地址消毒器来说更漂亮)
当我将SIGINT
发送到整个流程组时,asan_symbolize.py
退出,executable
收到(作为第二个信号)SIGPIPE
。由于管道很快关闭,executable
到stdout
和stderr
的信号处理输出消失了,因为stdout
和stderr
已经被销毁。
在tee
收到stdout
之后,是否有解决方案(类似stderr
之间的内容?)使SIGPIPE
和executable
重定向到终端?
也许我需要一个我目前不知道的不同解决方案,我运气不好......
答案 0 :(得分:1)
可以用于ttys的脏技巧(从stdin重建stdout和stderr)。在SIGPIPE的信号处理程序内
void sigpipe_handler(int s)
{
dup2 (0, 1);
dup2 (0, 2);
}