备份标准输出的文件描述符,稍后仅使用 dup2 将打印恢复到终端,而不使用 C 中的 dup 系统调用

问题描述

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>


int main()
{
    int stdout_fd   = dup2(1,1);
    printf("stdout_fd:%d\n",stdout_fd);
    
    int fd_file     = open("file.txt",O_WRONLY|O_Trunc);
    fd_file         = dup2(fd_file,1);
    printf("file descriptor of file.txt : %d\n",fd_file);
    
    fd_file         = dup2(fd_file,stdout_fd);
    printf("file descriptor of file.txt : %d\n",fd_file);
    return 0;
}
O/P:
stdout
______
stdout_fd:1                                                                                                                                                 

file.txt
________
file descriptor of file.txt : 1
file descriptor of file.txt : 1

在这里我试图第一次打印到所需的“file.txt”而不是标准输出 然后对于第二个 printf,我试图在标准输出上打印,即将文件描述符 0 从 file.txt 恢复到标准输出

我想仅使用 dup2 来实现它,而不使用 dup。 我不想使用类似下面的东西

int stdout_fd = dup(fd_file);
dup2(fd_file,1);
printf("I am printing on file.txt");
dup2(fd_file,stdout_fd);
printf("I am printing on file.txt");

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)