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",stdin); 
	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;
}

参照先:http://blog.csdn.net/lstjsuperman/article/details/6407409リンクを開く