【发布时间】:2016-12-07 22:21:51
【问题描述】:
这是一个代码 sn-p。
int saved_stdout = dup(1);
int fd = open("file.txt", O_WRONLY | O_CREAT, 0640);
close(1);
dup(fd);
close(fd);
printf("This text should go into the file\n");
//restore stdout
dup2(saved_stdout, 1);
printf("stdout restore");
我正在尝试了解 dup 和 dup2。所以我最初将我的 file.txt 连接到标准输出。因此,每当我使用 printf 时,我都应该写入 file.txt 而不是 stdout。但是,一旦我用完这种用法,我也想恢复它,所以我最后也使用 dup2。
问题是文本“此文本应该进入文件\n”实际上从未进入文件,而是打印在标准输出上。为什么这样?我寻找它,却发现 dup2 调用发生在 printf("This text..."); 之前。声明,为什么会这样?
【问题讨论】:
标签: c process sequence dup2 dup