linux程序打印重定向到文件的问题

目的是要让程序的printf的打印能重定向到某个文本中,ctrl+c强制退出后查看文本,方便调试。
运行方式:
a. out程序正常运行是会打印一些字符的
a.out > 1.txt 2>&1
把stdout与stderr都重定向到1.txt文件中去,结果发现运行过程中1.txt一直为空,调试发现如果a.out正常结束退出1.txt数据就正常,
ctrl+c强制退出程序则1.txt无数据,想到是缓存的原因,没有写到存储中。

但是在程序中加sync()函数没有效果,

解决方法:

比如某个时刻我要ctrl+c退出程序看1.txt内容,则程序中加入对SIGINT的检测,加exit()函数

  1. void handle_sig(int num)
  2. {
  3.     printf( "%s\n", __func__ );
  4.     exit(1);
  5. }

  6.     int
  7. main( int argc, char **argv )
  8. {
  9.     signal(SIGINT, handle_sig);
  10. //.......................
  11. }
更好的方法就是把printf替换成写log的函数,直接写文本,不用重定向。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值