freopen重定向stdin與stdout後如何恢複正常
函數定義如下:FILE * freopen ( const char * filename, const char * mode, FILE * stream );
在windows下控製台的標準輸出設備是CON,在linux下麵則用/dev/tty來顯示當前終端,標準的應該是/dev/console,但個人試驗隻有tty的情況下
才能成功。設置了set-user-id並將user 改成root後依然無法使用console完成輸出,具體原因有待考證。
在windows環境下:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *agrv[]) { freopen("ExampleIn","r",stdint); freopen("ExampleOut","w",stdout); /* program */ freopen("CON","r",stdint); freopen("CON","w",stdout); printf("succeed!/n"); return 0; }
在linux環境下:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *agrv[]) { freopen("ExampleIn","r",stdint); freopen("ExampleOut","w",stdout); /* program */ freopen("/dev/tty","r",stdint); freopen("/dev/tty","w",stdout); printf("succeed!/n"); return 0; }
轉自:https://blog.csdn.net/lstjsuperman/article/details/6407409
最後更新:2017-04-03 12:55:57