当前位置: 技术问答>linux和unix
初学u编程,问个dup2的问题
来源: 互联网 发布时间:2016-03-17
本文导语: 现在没有环境,代码没法验证,只能写的很抽象些。 int fd; char str[]="hello"; fd = open("test.ini",O_RDWR|O_CREAT); if (fd>当dup2后,我只复制了stdout,为什么在read的时候输入也变成了stdin了? 没有变成stdin啊,只是你用了re...
现在没有环境,代码没法验证,只能写的很抽象些。
int fd;
char str[]="hello";
fd = open("test.ini",O_RDWR|O_CREAT);
if (fd>当dup2后,我只复制了stdout,为什么在read的时候输入也变成了stdin了?
没有变成stdin啊,只是你用了read去读STDOUT_FILENO或者STDIN_FILENO,erro时自然会出现提示输入
因为这些是与标准输入输出相关联的文件描述符
>>当你在read前close掉fd后
是无法正确read fd的
也就是
dup2(STDOUT_FILENO,fd);
close(fd);
read(fd,str,sizeof(str)); //这里无法读成功
>>为什么在close掉fd后,write还可以输出到stdout
这和上面的问题一样,是无法成功的!