dup与dup2函数

编程

  1. 依赖的头文件

    #include <unistd.h>
  2. 函数定义

    int dup(int oldfd);

    int dup2(int oldfd, int newfd);

  3. 函数作用

    • dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。
    • 如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。
    • 如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。
  4. 实战

    • 需求:在代码中执行2次printf("hello Linux

      "),前一次输入到world文件中,后一次输入到屏幕上

#include <unistd.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <stdio.h>

void file_Redirect()

{

//先备份现场

int outfd = dup(1);

//先做重定向

int fd = open("world", O_WRONLY|O_CREAT,0666);

//标准输出到重定向fd到对应的文件

dup2(fd, 1);

printf("hello Linux

");

//需要来一次刷新

fflush(stdout);

//需要恢复1,重新到标准输出

dup2(outfd, 1);

printf("hello Linux

");

}

int main(int argc, char* argv[])

{

file_Redirect();

return 0;

}

以上是 dup与dup2函数 的全部内容, 来源链接: utcz.com/z/514582.html

回到顶部