1.利用文件描述符规则实现重定向
文件描述的分配规则:最小没有使用的下标会分给最新打开的文件
正常printf打印是在stdin标准输出显示器打印,stdin标准输出显示器的fd是1。
所以只要把显示器文件stdin给关闭,再打开一个文件,这个文件的 fd根据规则就会是1。
但是在上层,printf打印只会向fd为1的文件的缓冲区打印,这样就完成了狸猫换太子。
把log.txt的文件描述符打印到log.txt中。
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
int main()
{
close(1);
int fd = open("log.txt",O_CREAT|O_TRUNC|O_WRONLY,0666);
printf("fd:%d\n",fd);
return 0;
}
运行结果