微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决备份标准输出的文件描述符,稍后仅使用 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 举报,一经查实,本站将立刻删除。