重定向
stdout:终端显示
int stdout_value=dup(fileno(stdout)); dup复制一个文件描述符
dup2(stdout_value,fileno(stdout)); 恢复控制台输出
#include <stdio.h>
int main()
{
int stdout_value=dup(fileno(stdout));
printf("手握日月摘星辰");
printf("%d\n",stdout_value) ;
freopen("stdout.txt","a",stdout); //将本应该显示在终端的显示在文件,文件不存在会新建文件
printf("手握日月摘星辰");
printf("%d\n",stdout_value) ;
printf("世间无我这般人");
fflush(stdout); //刷新缓存区,不刷新,这块的缓存会接着显示到终端
//关闭文件,继续显示在终端
dup2(stdout_value,fileno(stdout));
printf("世间无我这般人");
return 0;
}
fflush(stdout):刷新缓存区
stdin:键盘输入
//重定向stdin(键盘输入) 改为到stdin.txt文件
freopen("stdin.txt","r",stdin);
scanf("%d",&a);
printf("freopen() : printf to stdout .txt %d\n",a);
// fclose(stdout)的结果:
//1. 关闭stdout指针文件