代码如下:
int fd=open("test.txt",O_RDWR|O_CREAT);
printf("\n"); //回车不可少。只有按下回车后,数据才被送往键盘缓冲区,形成输入流
int stdout_cp=100; //先用dup2(...)函数复制stdout文件描述符1,然后复制回去
dup2(1,stdout_cp);
close(1); //关闭stdout
int fd2=dup(fd); //dup会复制fd文件描述符到当前未打开的最小描述符,即1
printf(.....); //printf输出的内容直接输入文件描述符fd指向的文件,即test.txt
close(fd2); //等于close(1)
dup2(stdout_cp,1); //把指向stdout的文件描述符复制回去
printf(.....); //又可以向屏幕输出了
关闭标准输出并直接输出到文件中:顶替值为1的文件描述符,让1指向文件
重新打开标准输出:先用dup2(…)函数复制stdout文件描述符1,然后复制回去