为什么dup2必须是原子的? close(oldFd)dup(newFd)之间会发生什么?

时间:2016-09-10 15:12:25

标签: c unix operating-system dup2 dup

我的操作系统测试中存在一个问题,我不确定:

给出以下代码:

MethodNotAllowedHttpException in RouteCollection.php line 218:

(1)如何使用其他系统调用替换dup2()调用?

我的回答:

int fd = open("File", O_RDWR);
dup2(fd, 1);
write(1, "Hi", 2);
exit(0); 

(2)在给定代码中替换答案(1)的代码,在生成的可执行文件的执行过程中会发生什么,这强调了dup2()是原子操作的必要性?

在这种情况下,给出'给定'代码我无法找到反例;我的反例是:

 close(1);
 dup(fd);

我用这个例子说,如果该行'写(1," a",1)'安排在'关闭'并且' dup',会出现错误,因为不存在fd = 1的文件;但我无法找到可能的特殊情况'用开头给出的代码。我想知道这个练习是否存在歧义,或者我对此并不了解。 提前谢谢!

0 个答案:

没有答案