开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:Dup2 文件描述符复制 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/11031
Dup2 文件描述符复制
dup2 函数 重定向
#include<unistd.h>
Int dup2(int oldfd, int newfd)
1. 功能:
复制一份打开的文件描述符 oldfd,并分配新的文件描述符 newfd,newfd 也标识oldfd 所标识的文件。
2.注意:
newfd 是小于文件描述符最大允许值的负整数,如果 newfd 是一个已经打开的文件描述符,则首先关闭该文件,然后再复制。
3.参数:
要复制的文件描述符 oldfd
分配的新的文件描述符 newfd
4. 返回值
成功:返回 newfd
失败:返回-1,错误代码存于errno中
代码如下:
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include <fcnt1.h>
int main(int argc, char *argv[])
{
int fd ,new_fd;
fd=open(“./test.txt”,O_RDWR);
if(fd<0)
{
perror(“open”);
return 0;
}
new_fd = dup2(fd,1);//new_fd的值为1
printf(“new_fd=%d\n”,new_fd);
printf(“hello world\n);
write(1,”hello kitty”,11);
结果如下:
hello kittynew fd=1
hello world
能够实现文件描述符的复制,而且不用保证1最小可用,直接指定new_fd为1即可。