问题描述
#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 (将#修改为@)