UNIX环境下,怎么实现dup2函数,不允许调用fcntl

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;
}

UNIX环境下,怎么实现dup2函数,不允许调用fcntl

相关文章:

你感兴趣的文章:

标签云: