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

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

高級I/O-----dup/dup2-創(chuàng)新互聯(lián)

dup/dup2

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、衢州網(wǎng)站維護、網(wǎng)站推廣。

dup/dup2是兩個用于指定文件操作符的方法,作用很相似,它是得兩個文件描述符指向同一個file結(jié)構(gòu)體,使file的引用計數(shù)為2,所以在使用的時候我們需要手動關(guān)閉另外一個不需要的。

dup:

dup的作用是將文件描述符指向一個最小的文件描述符。

       #include 

       int dup(int oldfd);
       int dup2(int oldfd, int newfd);

因為比較簡單,就從代碼來看吧

  1 #include
  2 #include
  3 #include
  4 #include
  5 #include
  6 #include
  7 #define _PATH_ "./test.log"
  8 
  9 
 10 int main()
 11 {
 12     umask(0);
 13     int fd=open(_PATH_,O_CREAT|O_WRONLY,0644);//打開一個新的文件
 14     if(fd<0)
 15     {
 16         perror("open");
 17     }
 18     close(1);//關(guān)掉需要用dup指向的文件描述符,注意(dup會使fd指向一個未使用的最           //小的文件描述符)
 19     int new_fd=dup(fd);//現(xiàn)在1號文件描述符指向剛才open的文件
 20     close(fd);   //關(guān)閉之前open的文件描述符,如果不關(guān)閉,則從fd中也能網(wǎng)文件                               //里寫。
 21     char buf[1024];
 22     while(1)
 23     {
 24         memset(buf,'\0',sizeof(buf));
 25         ssize_t size=read(0,buf,sizeof(buf)-1);
 26         if(size>0)
 27         {
 28             buf[size]='\0';
 29         }
 30         if(strncmp(buf,"quit",4)==0)
 31         {   
 32             break;
 31         {
 32             break;
 33         }
 34         printf("%s",buf);//printf會輸出到1號文件描述符中
 35         fflush(stdout);
 36     }
 37     close(1);
 38     return 0;
 39 }

效果圖

高級I/O-----dup/dup2高級I/O-----dup/dup2

dup2:

 1 #include
 2 #include
 3 #include
 4 #include
 5 #include
 6 #include
 7 #define _PATH_ "./test.log"
 8 
 9 int main()
 10 {
 11     umask(0);
 12     int fd =open(_PATH_,O_CREAT|O_WRONLY,0644);
 13     if(fd<0)
 14     {
 15         perror("open");
 16     }
 17     close(1); //使用dup2所使用的重定向到的文件描述符必須先關(guān)閉
 18     int newfd=dup2(fd,1);
 19     close(fd);//關(guān)閉fd現(xiàn)在只有1號文件描述符指向所open的文件
 20     char buf[1024];
 21     printf("%d\n",newfd);
 22     while(1)
 23     {
 24         memset(buf,'\0',sizeof(buf));
 25         fgets(buf,sizeof(buf)-1,stdin);
 26         if(strncmp(buf,"quit",4)==0)
 27         {
 28             break;
 29         }
 30         printf("%s",buf);
 31         fflush(stdout);
 32     }
 33     return 0;
 34 }

結(jié)果和dup一樣

總結(jié):

當(dāng)需要往標(biāo)準(zhǔn)輸出上打的調(diào)試信息,可以使用重定向的方式讓它輸出到相應(yīng)的文件中。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


分享標(biāo)題:高級I/O-----dup/dup2-創(chuàng)新互聯(lián)
URL分享:http://weahome.cn/article/ddgipj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部