1. 程式人生 > >[Linux應用]Linux應用程序輸出數據重定向到文件中

[Linux應用]Linux應用程序輸出數據重定向到文件中

signal lin 原因 ... 直接 打印 http sig div

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

目的是要讓程序的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()函數

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

更好的方法就是把printf替換成寫log的函數,直接寫文本,不用重定向。
作者:帥得不敢出門 程序員群:31843264

[Linux應用]Linux應用程序輸出數據重定向到文件中