首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-02-15 
UNIX环境下,如何实现dup2函数,不允许调用fcntl?RT[解决办法]dup2不是函数吧,是系统调用!这是OS实现的![解

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

热点排行