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

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

高級(jí)I/O-----dup/dup2

dup/dup2

創(chuàng)新新互聯(lián),憑借十載的成都做網(wǎng)站、成都網(wǎng)站制作經(jīng)驗(yàn),本著真心·誠(chéng)心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有上千案例。做網(wǎng)站建設(shè),選成都創(chuàng)新互聯(lián)

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

dup:

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

       #include 

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

因?yàn)楸容^簡(jiǎn)單,就從代碼來(lái)看吧

  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);//打開(kāi)一個(gè)新的文件
 14     if(fd<0)
 15     {
 16         perror("open");
 17     }
 18     close(1);//關(guān)掉需要用dup指向的文件描述符,注意(dup會(huì)使fd指向一個(gè)未使用的最           //小的文件描述符)
 19     int new_fd=dup(fd);//現(xiàn)在1號(hào)文件描述符指向剛才open的文件
 20     close(fd);   //關(guān)閉之前open的文件描述符,如果不關(guān)閉,則從fd中也能網(wǎng)文件                               //里寫(xiě)。
 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會(huì)輸出到1號(hào)文件描述符中
 35         fflush(stdout);
 36     }
 37     close(1);
 38     return 0;
 39 }

效果圖

高級(jí)I/O-----dup/dup2高級(jí)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號(hào)文件描述符指向所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)的文件中。


新聞名稱(chēng):高級(jí)I/O-----dup/dup2
網(wǎng)站路徑:http://weahome.cn/article/pjjsos.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部