linux unix學習之檔案程式設計二

2021-06-22 13:32:36 字數 1874 閱讀 5073

6.lseek函式:

off_t lseek(int fildes,off_t offset ,int whence);

fildes:已開啟的檔名

offset:為根據引數whence來移動讀寫位置的位移數

whence:

seek_set 引數offset即為新的讀寫位置。

seek_cur 以目前的讀寫位置往後增加offset個位移量。

seek_end 將讀寫位置指向檔案尾後再增加offset個位移量。

當whence 值為seek_cur 或seek_end時, 引數offet允許負值的出現。

下列是教特別的使用方式:

1) 欲將讀寫位置移到檔案開頭時:lseek(int fildes,0,seek_set);

2) 欲將讀寫位置移到檔案尾時:lseek(int fildes, 0,seek_end);

3) 想要取得目前檔案位置時:lseek(int fildes, 0,seek_cur);

返回值:正確返回的是返回讀寫檔案的位置,也就是距離檔案開頭多少個位元組。返回-1則為錯誤

7.mkstemp 函式:

int mkstemp(char * template);

作用:用來建立唯一的臨時檔案。引數template 所指的檔名稱字串中最後六個字元必須是******。mkstemp()會以可讀寫模式和0600 許可權來開啟該檔案, 如果該檔案不存在則會建立該檔案。開啟該檔案後其檔案描述詞會返回。檔案順利開啟後返回可讀寫的檔案描述詞。若果檔案開啟失敗則返回null, 並把錯誤**存在errno 中。

注意:

引數template所指的檔名稱字串必須宣告為陣列, 如:

char template[ ] ="template-******";

千萬不可以使用下列的表達方式

char *template = "template-******";

例子:#include

#include

#include

#include

#include

int main()

8.dup/dup2函式:

int dup (int oldfd);

int dup2(int odlfd,int newfd);

1)dup()用來複製引數oldfd所指的檔案描述詞, 並將它返回。此新的檔案描述詞和引數oldfd指的是同乙個檔案, 共享所有的鎖定、讀寫位置和各項許可權或旗標。例如, 當利用lseek()對某個檔案描述詞作用時, 另乙個檔案描述詞的讀寫位置也會隨著改變。不過, 檔案描述詞之間並不共享close-on-exec旗標

返回值:當複製成功時, 則返回最小及尚未使用的檔案描述詞。若有錯誤則返回-1

2)dup2()用來複製引數oldfd所指的檔案描述詞, 並將它拷貝至引數newfd後一塊返回。若引數newfd為一已開啟的檔案描述詞, 則newfd所指的檔案會先被關閉。dup2()所複製的檔案描述詞, 與原來的檔案描述詞共享各種檔案狀態, 詳情可參考dup()。

返回值:當複製成功時, 則返回最小及尚未使用的檔案描述詞。若有錯誤則返回-1

dup(filedes);等效於 fcntl(filedes,f_dupfd,0);

dup2(filedes,filedes2);等效於

close(filedes2);

fcntl(filede,f_dupfd,filedes2);

9.fcntl函式:

int fcntl(int fd , int cmd);

int fcntl(int fd,int cmd,long arg);

int fcntl(int fd,int cmd,struct flock * lock);

應用例子:對於指定的描述符列印檔案標誌

linux unix學習之檔案程式設計一

linux檔案程式設計操作中有 一 系統檔案呼叫 只能在linux系統中呼叫 二 c檔案庫函式呼叫 可以在任何系統中呼叫 系統檔案的呼叫 需要的包含的標頭檔案 include include include 1.open函式 int open const char pathname,int flag...

Linux UNIX網路程式設計筆記(四) UDP程式設計

udp客戶 伺服器的套接字函式 recvfrom 函式 接收資料,類似標準read include include ssize t recvfrom int sockfd,void buf,size t len,int flags,struct sockaddr from,size t addrle...

python學習之dedecms exp編寫

針對織夢5.7 sp1遠端檔案包含getshell exp編寫,漏洞分析請檢視網上分析,不再贅述。exp coding utf 8 import requests import time def dada url url index url install index.php khtml,like ...