这是我的程序: 我对此感到困惑。我不明白为什么c1和c2分享相同的价值,但c3的价值是不同于c1和c2的?有人可以帮我解释一下吗?谢谢。下面是程序:有人可以帮我解释为什么下面的C程序(系统调用)有这种输出?
#include <stdio.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int fd1, fd2, fd3;
char c1, c2, c3;
char *fname = argv[1];
fd1 = open(fname, O_RDONLY, 0);
fd2 = open(fname, O_RDONLY, 0);
fd3 = open(fname, O_RDONLY, 0);
dup2(fd2, fd3);
read(fd1, &c1, 1);
read(fd2, &c2, 1);
read(fd3, &c3, 1);
printf("c1 = %c, c2 = %c, c3 = %c\n", c1, c2, c3);
return 0;
}
您是否阅读过'dup2'的文档?你不了解它吗? – Mat
我的意思是在调用dup2之后,fd2和fd3应该指向打开文件表中的同一个文件,那么我认为c2和c3应该共享相同的值而不是c1和c2 – user144600