linux学习第15天(dup和dup2)
头文件#include<unistd.h>
#include<fcntl.h>
用来做重定向,本质就是复制文件描述符
dup
int dup(int oldfd);
oldfd:旧的文件描述符
例子
编译执行,4这个文件描述符就指向3指向的内容,dup就到这
dup2
int dup2(int oldfd,int newfd);
newfd:新的文件描述符,指向oldfd指向的内容,是复制oldfd的新的文件描述符
例子1
编译执行,可以看到,fd2是新的文件描述符,指向fd1所指的,将fd2添加“1234321”,可以看到,dup.c也就是fd1被修改了(强调一下,打开一个文件,读写指针默认在文件头,如果文件本身有内容,直接写入会覆盖原有内容。例子2因为文件没有关,hello world就在1234321后面加入。)
例子2
将原本输出到屏幕上的内容,输入到dup.c
编译执行,在执行dup2(fd1,STDOUT_FILENO)这一句后,后续打印到屏幕上的都将送入fd1中,