通过flush stdout解决输出不完整问题

进程每秒钟输出log到stdout, 用kill指令杀死进程,发现log经常只有前十几秒甚至一两秒。改成在A内部abort(), 发现log还是不全,改成exit(0)之后正常了。网上查到,exit()保证会flush stdout.
那么假如还是采用kill,是否有办法让它flush?
kill 默认给程序发出SIGTERM信号,程序可以自己设置收到该信号后如何处理;ctrl+c发出SIGINT信号,也可以设置处理方式;kill -9发出的是SIGKILL,程序不会收到信号,直接被终止。

#include <csignal>
void signalHandler( int signum )
{
    cout << "Interrupt signal (" << signum << ") received.\n";
    fflush(stdout);
    exit(signum); 
}
int main(){
    signal(SIGINT, signalHandler);
    signal(SIGTERM, signalHandler);

	// 原来的代码...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值