dup函数:
dup函数复制文件描述符,会返回一个未被占用的最小的文件描述符
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main()
{
char buf[20]="wwjwoaini!";
int fd=open("dup.txt",O_RDWR|O_CREAT,0600);
int fd2=dup(fd);
write(fd,buf,strlen(buf));
close(fd);
memset(buf,0,20);
lseek(fd2,0,SEEK_SET);//这步一定不能忘,否则读不出任何类容
read(fd2,buf,20);
printf("读取的类容是%s",buf);
close(fd2);
return 0;
}
dup2函数:
指定要复制的文件描述符,当fd2指向一个文件时,会先于指向的文件断开,然后指向fd所指向的文件
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main()
{
char buf[20]="wwjwoaini!";
int fd=open("dup.txt",O_RDWR|O_CREAT,0600);
int fd2=open("test.txt",O_RDWR|O_CREAT,0600);
dup2(fd,fd2);
write(fd,buf,strlen(buf));
close(fd);
memset(buf,0,20);
lseek(fd2,0,SEEK_SET);
read(fd2,buf,20);
printf("读取的类容是%s",buf);
close(fd2);
return 0;
}