Linux中文件描述符 0代表标准输入文件stdin、1代表标准输出文件stdout、2代表标准错误输出文件stderr,STDOUT_FILENO是一个宏 为1
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<fcntl.h>
int main()
{
int fd_new,fd_old,fd_c;
fd_c = open("test.txt",O_CREAT | O_RDWR,0664);
if(-1 == fd_c)
exit(1);
fd_old = dup(STDOUT_FILENO);
//将STDOUT_FILENO的文件描述符所指向的内容复制一份给fd_old
dup2(fd_c,STDOUT_FILENO);
//将STDOUT_FILENO复制一份给fd_c
close(fd_c);
//关闭 计数将减1
printf("hello");
fflush(stdout);
write(STDOUT_FILENO,"ojbk",4);
dup2(STDOUT_FILENO,fd_old);
//恢复回来
close(fd_old);
return 0;
}
主要是利用dup和dup2实现输出重定向