簡單檔案I/O編程之基本操作函數

來源:互聯網
上載者:User

     昨晚專門抽時間練習了一下檔案I/O編程,由於嵌入式Linux是經Llinux裁剪而來的,它的系統調用及使用者編程介面API與Linux基本一致,因此,學習Linux中相關內容的基本編程,對以後嵌入式Linux的實際開發是十分有協助的。

 

     本文介紹幾個最最最基本的檔案I/O操作函數,如open、close、read、write、lseek等。

 

     1.open

       原型:int open(const char *pathname, int flags, int perms)      

       pathname表示要開啟的檔案名稱,flags表示檔案要開啟的方式,perms表示存取許可權。若成功,返迴文件描述符(一般用fd表示),失敗返回-1。具體的參數請各位自行查閱相關文檔。

 

     2.close

       原型:int close(int fd)

       fd即在上述open函數獲得的檔案描述符,若成功返回0,出錯返回-1。

 

      用法舉例:

      int fd;<br />if((fd = open("/tmp/jarvis_hello.c", O_CREAT | O_TRUNC | O_WRONLY, 0600)) < 0);<br />{<br /> perror("open");<br /> exit(1);<br />}</p><p>if(close(fd) < 0)<br />{<br /> perror("close");<br /> exit(1);<br />}

 

 

      3.read

      原型:ssize_t read(int fd, void *buf, size_t count)

      buf是指定儲存空間讀出資料的緩衝區,count指定讀出的位元組數。成功返回0,否則返回-1。

 

      4.write

      原型:ssize_t write(int fd, void *buf, size_t count)

      buf是指定儲存空間寫入的資料緩衝區,count是寫入的位元組數,成功返回已寫入的字數,失敗返回-1

 

      5.lseek

      原型:off_t lseek(int fd, off_t offset, int whence)

      offset是位移量,可正可負(前移、後移),whence有三個參數可供選擇:SEEK_SET檔案開頭,SEEK_CUR檔案當前位置,SEEK_END檔案結尾。whence配合offset就能確定當前需要操作檔案的具體位置了。執行成功,返迴文件當前的位移,失敗返回-1。

 

      用法舉例:

      int i, fd, size, len;<br />char *buf = "Hello, i`m Jarivs!";<br />char buf_r[10];<br />len = strlen(buf);</p><p>fd = open("tmp/jarvis_hello.c", O_CREAT | O_TRUNC | O_RDWR, 0666); //省略容錯檢測</p><p>if ((size = write(fd, buf, len)) < 0)<br />{<br /> ...<br /> //出錯處理<br />} //否則把"Hello, i`m Jarivs!"寫入檔案成功</p><p>lseek(fd, 0, SEEK_SET); //由於剛才寫入時改變了檔案指標位置,現將它複原到起始位</p><p>if ((size = read(fd, buf_r, 10)) < 0)<br />{<br /> ...<br /> //出錯處理<br />} //否則從檔案開始處讀出10個位元組成功</p><p>close(fd);<br />....... //省略</p><p>

 

     

      對於有心學習Linux編程的你來說,僅僅看是不夠的,起碼要在自己的平台環境上,把程式敲敲,看究竟是否實現了自己預想的效果。以上僅對最基本的檔案I/O操作函數進行介紹,更多內容我將在之後的學習記錄中與大家分享,若有錯漏之處懇請各位看官指出。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.