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 ...