注册 登录
编程论坛 Linux系统管理

系统调用 dup2 的实现

madfrogme 发布于 2012-08-29 16:49, 5274 次点击
程序代码:
#include <fcntl.h>

int dup2(int fd1, int fd2) {
   
    if( fd1 != fd2 ) {

        /* check to make sure that fd1 is a valid open
         * file descriptor
         */
        if ( fcntl( fd1, F_GETFL) < 0 )

            return -1;

        /* check to see if fd2 is already open;
         * if so, close it
         */
        if( fcntl( fd2, F_GETFL) >= 0 )

            close ( fd2 );

        if(fcntl ( fd1, F_DUPFD, fd2 ) < 0)

            return -1;
    }

    return fd2;
}
2 回复
#2
pangding2012-08-30 01:55
不错。

你在这发的这些东西是你们学的,还是你自己研究的?
#3
madfrogme2012-08-30 07:02
以下是引用pangding在2012-8-30 02:55:00的发言:

不错。

你在这发的这些东西是你们学的,还是你自己研究的?

都是我自己在瞎倒腾而已
1