Linux的那些事兒(5)—-Linux環境下編程之檔案I/O

來源:互聯網
上載者:User

 Date:2009.05.08

Content:檔案I/O

大致說明可用的檔案I/O函數:開啟檔案、讀檔案、寫檔案等;檔案I/O大致包括5個函數:open/read/write/lseek/close

本次說明的函數經常被稱為不帶緩衝的I/O,指的是每個read和write都調用核心中的一個系統調用。

只要涉及到多個進程間的共用資源,原子操作的概念就相當重要。

 

1、open函數

調用open函數可以開啟或建立一個檔案

********************************************************************************

pathname是要開啟或者建立檔案的名字

oflag參數可用來說明此函數的多個選項(O_RDONLY表示唯讀開啟;O_WRONLY表示唯寫開啟;O_RDWR表示讀寫開啟)

這三個常量必須指定且只能指定一個,還有部分常量是可選的,在這裡不再給出

由open返回的檔案描述符一定是最小的未用描述符數值

********************************************************************************

#include <fcntl.h><br />int open(const char *pathname, int oflag, ... /* mode_t mode */ );<br />//傳回值:若成功返迴文件描述符,若出錯則返回-1

2、creat函數

調用creat函數可以建立一個檔案

#include <fcntl.h><br />//傳回值:同open一樣<br />int creat(const char *pathname, mode_t mode);<br />

3、close函數

調用close函數關閉一個開啟的檔案

#include <unistd.h><br />//傳回值:若成功返回0,否則返回-1<br />int close(int filedes);

4、lseek函數

調用lseek函數顯式的為一個開啟的檔案設定其位移量

********************************************************************************

offset的解釋與參數whence有關

若whence是SEEK_SET,則將該檔案的位移量設定為距檔案開始處offset個位元組

若whence是SEEK_CUR,則將該檔案的位移量設定為當前值加offset,offset可正可負

若whence是SEEK_END,則將該檔案的位移量設定為檔案長度加offset,offset可正可負

********************************************************************************

#include <unistd.h><br />//若成功返回新的檔案位移量,若出錯則返回-1<br />off_t lseek(int filedes, off_t offset, int whence);<br />

 

執行個體3-1測試能否對標準輸入設定位移量

#include "apue.h"</p><p>int<br />main(void)<br />{<br /> if (lseek(STDIN_FILENO, 0, SEEK_CUR) == -1)<br /> printf("cannot seek/n");<br /> else<br /> printf("seek OK/n");<br /> exit(0);<br />}

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.