天天看點

線程和i/o

“簡述: pread/pwrite 接口

參考: http://blog.chinaunix.net/uid-28852942-id-3652277.html

我們建立了一個檔案test 内容為“123456789”

  1. 程式先先練兩次調用read(),每次讀取三個位元組
  2. 程式先調用pread()在離檔案頭五個位元組出讀3資料,然後在調用

    read()讀取三個位元組。

    a程式為:

fd=open("test",O_RDONLY);
        read(fd,buf,);
        buf[]='\0';
        printf("%s\n",buf);
        read(fd,buf,);
        buf[]='\0';
        printf("%s\n",buf);
           
輸出為:
             123
             456
 b程式為:
           
fd=open("test",O_RDONLY);
        pread(fd,buf,,);
        buf[]='\0';
        printf("%s\n",buf);
        read(fd,buf,);
        buf[]='\0';
        printf("%s\n",buf);
           
輸出為:
        678
        123
結論: 
     從輸出我們可以很清楚的看出。pread()調用并不會改變檔案指針。
     pread/pwrite 不會改變目前檔案的偏移量,是原子操作.
           

繼續閱讀