zoukankan      html  css  js  c++  java
  • [Linux应用]Linux应用程序输出数据重定向到文件中

    转自http://blog.chinaunix.net/uid-20680966-id-4698387.html

    目的是要让程序的printf的打印能重定向到某个文本中,ctrl+c强制退出后查看文本,方便调试。
    运行方式:
    a. out程序正常运行是会打印一些字符的

    a.out > 1.txt 2>&1

    作用:把stdout与stderr都重定向到1.txt文件中去,2>&1表示把错误输出2和标准输出1等同处理,之前是a.out 1>log, 因为linux默认是1.

    结果发现运行过程中1.txt一直为空,调试发现如果a.out正常结束退出1.txt数据就正常,
    ctrl+c强制退出程序则1.txt无数据,想到是缓存的原因,没有写到存储中。

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

    解决方法

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

    void handle_sig(int num)
    {
        printf( "%s
    ", __func__ );
        exit(1);
    }
        int
    main( int argc, char **argv )
    {
        signal(SIGINT, handle_sig);
    //.......................
    }

    更好的方法就是把printf替换成写log的函数,直接写文本,不用重定向。
    作者:帅得不敢出门  程序员群:31843264

  • 相关阅读:
    array_unshift() 、
    readfile() 函数
    Java的异常处理
    Java 接口
    Java 抽象类
    final关键字
    statice关键字
    dom查询
    JS 正则表达式
    JS对象
  • 原文地址:https://www.cnblogs.com/aaronLinux/p/7587040.html
Copyright © 2011-2022 走看看