gpt4 book ai didi

c++ - 在 sigpipe 之后恢复 stdout 和 stderr

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:13:47 25 4
gpt4 key购买 nike

当我这样做

executable 2>&1 | asan_symbolize.py

其中 executable 是一个 C++ 可执行文件,我将 stdout 和 stderr 通过管道传输到 asan_symbolize.py(一些用于泄漏清理器和地址清理器的漂亮文件)

当我向整个进程组发送 SIGINT 时,asan_symbolize.py 退出并且 executable 收到一个(作为第二个信号)一个 SIGPIPE。由于管道快速关闭,executablestdoutstderr 的信号处理输出消失了,因为 stdoutstderr 已经被销毁。

是否有一个解决方案(比如 tee inbetween?)使 stdoutstderr 在收到 后再次重定向到终端>SIGPIPE executable 中?

也许我需要一个我目前不知道的不同解决方案,我运气不好......

最佳答案

可用于 ttys 的肮脏技巧(从 stdin 重建 stdout 和 stderr)。在 SIGPIPE 的信号处理程序中

void sigpipe_handler(int s)
{
dup2 (0, 1);
dup2 (0, 2);
}

关于c++ - 在 sigpipe 之后恢复 stdout 和 stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36719682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com