• <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);

             

            久久亚洲AV无码精品色午夜| 久久亚洲中文字幕精品一区| 久久婷婷成人综合色综合| 亚洲国产精品无码久久久不卡| 日本强好片久久久久久AAA| 久久精品国产99国产电影网| 精品久久久无码中文字幕| 亚洲综合久久夜AV | 久久久无码精品亚洲日韩按摩 | 欧美国产成人久久精品| 亚洲色欲久久久久综合网| 国色天香久久久久久久小说 | 国内精品久久久久久野外| 91精品国产91热久久久久福利| 免费一级做a爰片久久毛片潮| 日韩精品久久无码中文字幕| 久久免费视频6| 国产午夜免费高清久久影院| 日本精品久久久久影院日本| 久久狠狠色狠狠色综合| 无码精品久久久天天影视| 精品国产青草久久久久福利 | 国内精品久久久久久中文字幕| 影音先锋女人AV鲁色资源网久久| 精品一久久香蕉国产线看播放| 久久99国产乱子伦精品免费| 久久久久亚洲精品日久生情| 一本伊大人香蕉久久网手机| 亚洲AV无一区二区三区久久| 亚洲精品tv久久久久久久久久| 日本三级久久网| 久久九九全国免费| 青青青青久久精品国产 | 天天躁日日躁狠狠久久| 伊人久久亚洲综合影院| 久久久久国产| 亚洲精品视频久久久| 久久久这里有精品| 国产69精品久久久久9999APGF| 狠狠色丁香婷婷久久综合| 亚洲国产精品嫩草影院久久 |