轉自: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\n", __func__ ); exit(1); } int main( int argc, char **argv ) { signal(SIGINT, handle_sig); //....................... }
更好的方法就是把printf替換成寫log的函數,直接寫文本,不用重定向。
作者:帥得不敢出門 程序員群:31843264