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

             

            精品午夜久久福利大片| 国产精品免费久久| 国产精品久久久香蕉| 思思久久99热只有频精品66| 人妻无码αv中文字幕久久| 国产精品美女久久久| 久久久久久国产精品美女| 久久久SS麻豆欧美国产日韩| 国产∨亚洲V天堂无码久久久| 99久久精品国产一区二区三区| 武侠古典久久婷婷狼人伊人| 91精品国产综合久久精品| 欧美国产精品久久高清| 精品久久久久久亚洲精品| 亚洲精品WWW久久久久久| 久久久青草久久久青草| 国产aⅴ激情无码久久| 久久久WWW成人| 成人精品一区二区久久久| 久久精品国产亚洲AV高清热| 久久这里只精品99re66| 大蕉久久伊人中文字幕| 国内精品久久久久影院日本| 亚洲色欲久久久综合网东京热| 久久天天躁狠狠躁夜夜av浪潮| 一本色道久久88加勒比—综合| 久久午夜羞羞影院免费观看| 久久精品国产亚洲av麻豆图片| 色播久久人人爽人人爽人人片aV| 日本精品久久久久中文字幕| 国产一区二区精品久久| 久久久国产乱子伦精品作者| 精品久久亚洲中文无码| 国产精品99久久久精品无码| 少妇久久久久久被弄到高潮 | 国产成人精品综合久久久| 久久婷婷五月综合97色直播| 久久国产综合精品五月天| 久久艹国产| 99精品国产免费久久久久久下载| 久久青青草视频|