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的作用是將文件描述符指向一個最小的文件描述符。
#includeint dup(int oldfd); int dup2(int oldfd, int newfd);
因為比較簡單,就從代碼來看吧
1 #include2 #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 }
效果圖
dup2:
1 #include2 #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)用場景需求。