• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            newplan

            阿基米德在洗澡時發現浮力原理,高興得來不及穿上褲子,跑到街上大喊:Eureka(我找到了)。
            posts - 39, comments - 26, trackbacks - 0, articles - 4
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            同步寫與異步寫文件實現

            Posted on 2007-11-21 18:45 山泉彎延 閱讀(1229) 評論(0)  編輯 收藏 引用 所屬分類: UNIX Programming
            /*
             07.11.20 于海韻
            */
            #
            include  "sys/times.h"
            #include "apue.h"
            #include "fcntl.h"

            clock_t times(struct tms *buf);

            static void pr_times(clock_t real 
            ,struct tms *tmsstart, struct tms *tmsend);

            int main(int argc, char *argv[])
            {
              struct tms tmsstart
            ,tmsend;
             
              clock_t  start
            ,end;
             
              off_t excursion;
             
              
            if((excursion=lseek(0,0,SEEK_END))==-1)printf("can not seek!\n");
             
              char buf[excursion];
             
              
            /*printf("excutsion ==#%d\n",excursion);*/
              
            int outfile_fd;/*out file descrite tag */
             
              lseek(
            0,0,SEEK_SET);/*it is very importent  to go back  to the beginning of input file!*/
             
              
            if(read(0,buf,excursion)==0)printf("read OK!\n");
              
            /* buf[excursion]='\0';*/
              
            if(argc==3  &&  strcmp(argv[2],"sync")==0)
                  { 
            if(( outfile_fd=open(argv[1],O_RDWR|O_CREAT|O_SYNC,0666))<0)err_sys("creat error");}
                
            else if(argc==2)
                   {
            if (( outfile_fd=open(argv[1],O_RDWR|O_CREAT,0666))<0)err_sys("creat error");}
                
            else{printf("para error!\n");exit(1);}
                long size
            =1024
                fflush(stdin);
                
            printf("BUFFSIZE  USER CPU  SYSTEM CPU  REAL TIMES  CIRCLE TIMES\n");
                
            int  n;
                
            int t;
                char 
            *p=buf;
                long  redo_count;
            /*re do copy times*/ 

              
            do
                  
            if((start=times(&tmsstart))==-1)err_sys("times error");
                  redo_count
            =0;/*it is very import to set the counter zero at every circle */
                  t
            =1;/*it is use in the inside while */
                  
            while((n=write(outfile_fd,p,size))==size)
                          {   p
            +=size;/*the begin buf must increase every time*/
                              redo_count
            ++;/*count how many times circle do*/
                              t
            =size*redo_count;/*one tag to count how many charaters we have travered*/
                              
            /* printf("excursion==%d  t==%d   excursion-t==%d  size==%d\n",excursion,t,excursion-t,size);*/
                              
            if((excursion-t)<size)break;
                          }
                  
            if(excursion-t>0)
                     
            if(write(outfile_fd,p,excursion-t)!=(excursion-t))err_sys("read error");
                  
            if((end=times(&tmsend))==-1)err_sys("times error");
                  
            printf("%7ld",size);
                  pr_times(end
            -start,&tmsstart,&tmsend);
                  
            printf("%7ld\n",redo_count);
                  lseek(outfile_fd
            ,0,SEEK_SET);/*let the outfile pointer go back to the beginning of outfile!*/
                  p
            =buf;/*let p return to the beginning of buf;*/
                 
            /* printf("size=%d  excursion=%d\n",size,excursion);*/
                 } 
            while((size*=2)<=excursion);
              
            return 0;
            }
            static void
            pr_times(clock_t real 
            ,struct tms *tmsstart,struct tms *tmsend)
            {static long clktck
            =0;
            if(clktck==0)
             
            if((clktck=sysconf(_SC_CLK_TCK))<0)
                
            printf("sysconf error");

            printf("   %2.5f",(tmsend->tms_utime-tmsstart->tms_utime)/(double)clktck);
            printf("   %2.5f",(tmsend->tms_stime-tmsstart->tms_stime)/(double)clktck);
            printf("     %2.5f    ",real/(double)clktck);

             

            一本色道久久88精品综合| 精品人妻伦九区久久AAA片69| 亚洲国产精品无码久久久久久曰| 久久亚洲国产精品五月天婷| 97精品国产97久久久久久免费| 久久精品国产2020| 热re99久久6国产精品免费| 久久96国产精品久久久| 久久精品视屏| 久久久久亚洲精品无码蜜桃| 国产免费久久久久久无码| 亚洲精品第一综合99久久| 国产精品久久网| 久久精品国产亚洲7777| 亚洲第一极品精品无码久久 | 亚洲第一永久AV网站久久精品男人的天堂AV | 久久se精品一区二区| 久久99精品国产99久久6| 国产美女亚洲精品久久久综合| 久久精品国产精品国产精品污| 欧洲国产伦久久久久久久| 国产精品久久久久久久久| 成人综合久久精品色婷婷| 国产视频久久| av午夜福利一片免费看久久| 伊人色综合久久天天网| 久久精品99无色码中文字幕| 久久精品草草草| 无码伊人66久久大杳蕉网站谷歌| 久久综合色之久久综合| 久久福利片| 99久久国产综合精品五月天喷水| 精品蜜臀久久久久99网站| 伊人久久大香线蕉亚洲| 人妻无码精品久久亚瑟影视| 久久高潮一级毛片免费| 久久99精品久久久久久水蜜桃| 久久综合九色综合欧美狠狠| 久久er热视频在这里精品| 国产一级持黄大片99久久| 99久久精品国产麻豆|