读书人

UNIX环境下怎么实现dup2函数不允许

发布时间: 2012-02-15 12:09:44 作者: rapoo

UNIX环境下,如何实现dup2函数,不允许调用fcntl?
RT

[解决办法]
dup2不是函数吧,是系统调用!这是OS实现的!
[解决办法]
帮你写了一个,已经测试过了。可以用dup来实现dup2

int replace_dup2(int oldfd,int newfd){
char *p=(char*)malloc(newfd> oldfd?newfd:oldfd);
int i=0;
do{ p[i]=dup(newfd); } while(p[i++] <newfd);
close(newfd);
newfd=dup(oldfd);
while(i) {
if(p[--i]> 0)
close(p[i]);
}
free(p);
return newfd;
}

读书人网 >UNIXLINUX

热点推荐