oprn read write close系統函式

2021-05-22 11:46:27 字數 1849 閱讀 6977

open系列是 posix 定義的,是unix系統裡的system call,只能用在 posix 的作業系統上。使用open系列函式需要"#include ".

基於檔案描述符的輸入輸出函式:

open:開啟乙個檔案,並指定訪問該檔案的方式,呼叫成功後返回乙個檔案描述符。

creat:開啟乙個檔案,如果該檔案不存在,則建立它,呼叫成功後返回乙個檔案描述符。

close:關閉檔案,程序對檔案所加的鎖全都被釋放。

read:從檔案描述符對應的檔案中讀取資料,呼叫成功後返回讀出的位元組數。

write:向檔案描述符對應的檔案中寫入資料,呼叫成功後返回寫入的位元組數。

ftruncate:把檔案描述符對應的檔案縮短到指定的長度,呼叫成功後返回0。

lseek:在檔案描述符對應的檔案裡把檔案指標設定到指定的位置,呼叫成功後返回新指標的位置。

fsync:將所有已寫入檔案中的資料真正寫到磁碟或其他下層裝置上,呼叫成功後返回0。

fstat:返回檔案描述符對應的檔案的相關資訊,把結果儲存在struct stat中,呼叫成功後返回0。

fchown:改變與開啟檔案相關聯的所有者和所有組,呼叫成功後返回0。

fchmod:把檔案描述符對應的檔案的許可權位改為指定的八進位制模式,呼叫成功後返回0。

flock:用於向檔案描述符對應的檔案施加建議性鎖,呼叫成功後返回0。

fcntl:既能施加建議性鎖也能施加強制性鎖,能建立記錄鎖、讀取鎖和寫入鎖,呼叫成功後返回0。

dup:複製檔案描述符,返回沒使用的檔案描述符中最小的編號。

dup2:由使用者指定返回的檔案描述符的值,用來重新開啟或重定向乙個檔案描述符。

select:同時從多個檔案描述符讀取資料或向多個檔案描述符寫入資料。

檔案描述符的優點:相容posix標準,許多系統呼叫都依賴於它。

檔案描述符的缺點:不能移植到unix以外的系統上去,也不直觀。

1)write

#include

size_t write(int fildes,const void *buf,size_t nbytes);

引數說明:

fildes:與檔案相對應的檔案描述符,可通過呼叫open函式獲取

buf:存放將寫入檔案的資料,可以是字串,也可是其他資料。其中buf是指向字串的指標

nbytes:需寫進檔案的位元組數

返回值:

-1:寫入失敗

0:寫入0個位元組

x:已寫入x個位元組

2)read

#include

size_t read(int fildes,char *buf,size_t nbytes);

引數說明:

fildes:檔案描述符

buf:存放從檔案中讀取的資料

nbytes:希望讀取的直接數

返回值:

-1:讀取失敗

0:讀取0個位元組

x:已讀取x個位元組

3)open

引數說明:

path:檔案存放路徑;

oflags:開啟方式。取值如下:

o_rdonly:以唯讀方式開啟,o_wronly:以只寫方式開啟,o_rdwr:以讀寫方式開啟

oflages引數中還包括下列可選模式的組合(用按位或操作)

o_trunc:把檔案長度設為0,丟棄已有的內容

o_creat:如果需要,就按引數mode中給出的訪問模式建立檔案

o_excl:已o_creat一起使用,確保呼叫者建立出檔案

4)close

#include

int close(int fildes);

引數:fildes:檔案描述符

返回:success:0

fail:-1

Linux系統wait 和waitpid 函式

include include pid t wait int status 程序一旦呼叫了wait,就立即阻塞自己,由wait自動分析是否當前程序的某個子程序已經退出,如果讓它找到了這樣乙個已經變成殭屍的子程序,wait就會收集這個子程序的資訊,並把它徹底銷毀後返回 如果沒有找到這樣乙個子程序,wa...

Python企業編碼生成系統之系統主要函式設計詳解

mkdir函式實現 建立資料夾函式 def mkdir path i ists os.path.exists path 判斷資料夾路徑是否存在 if not i ists 如果資料夾路徑不存在 os.mkdir path 建立要建立的資料夾 openfile函式實現 讀取檔案內容函式 def ope...

WaitForSingleObject函式的使用

程式舉例 1 建立對話方塊應用程式,專案名稱為mytestthread 2 新增按鈕,命名為啟動和停止,在對話方塊中增加編輯框,id為idc time,3 增加成員變數,handle m hthread 2 此為執行緒的控制代碼 4 定義全域性變數,用來控制線程的執行與否 volatile bool...