真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

實現(xiàn)的dup2()函數(shù)的源碼怎么寫

這篇文章將為大家詳細講解有關(guān)實現(xiàn)的dup2( )函數(shù)的源碼怎么寫,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

成都創(chuàng)新互聯(lián)公司作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計,有關(guān)企業(yè)網(wǎng)站設(shè)計方案、改版、費用等問題,行業(yè)涉及成都白烏魚等多個領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認可。

原 dup2()函數(shù):

#include 

int dup2( int fd, int fd2 );

對于 dup2,可以用 fd2 參數(shù)指定新描述符的值。如果 fd2 已經(jīng)打開,則先將其關(guān)閉。如若 fd 等于 fd2,則 dup2 返回 fd2,而不關(guān)閉它。否則,fd2 的 FD_CLOEXEC 文件描述符標志就被清除,這樣 fd2 在進程調(diào)用 exec 時是打開狀態(tài)。該函數(shù)返回的新文件描述符與參數(shù) fd 共享同一個文件表項。

下面是自己實現(xiàn)的 dup2函數(shù):

#include 
#include 
#include 
#include 
#include  
#include 
#include 
#include 

//檢查文件描述符是否有效
int isFileDescriptor( int fd )
{
    struct stat st;
    if( (-1 == fstat(fd,&st)) && (EBADF == errno) )
        return -1;
    return 0;
}

int my_dup2( int oldfd, int newfd )
{
    int tempfd;
    int fd_count;
    int fdarray[newfd];
    int res;

    if( -1 == isFileDescriptor( oldfd ) ) {
        printf("the file descriptor is invalid.\n");
        return -1;
    }

    //如果newfd等于oldfd,則直接返回newfd,而不關(guān)閉它
    if( oldfd == newfd ) 
        return newfd;
    
    //否則,關(guān)閉newfd
    if( 0 == isFileDescriptor( newfd ) ) {
        res = close( newfd );  
        if( -1 == res ) {
            perror("close file descriptor failed");
            return -1;
        }
    }

    //復制文件描述符
    for( fd_count=0; fd_count

程序運行結(jié)果:

[zhang@localhost APUE]$ ./my_dup2
write to testfd 5 successfully
read from initial fd 3 is: Hey man!

測試通過。

關(guān)于實現(xiàn)的dup2( )函數(shù)的源碼怎么寫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


網(wǎng)站欄目:實現(xiàn)的dup2()函數(shù)的源碼怎么寫
瀏覽路徑:http://weahome.cn/article/pcside.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部