閱讀720 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go IOS基礎 第二課
  下一篇:go Android係統Gps分析(一)