您好,登錄后才能下訂單哦!
原子操作pread,pwirte
#include <unistd.h>
ssize_t pread(int fd, void *buf, size_t nbytes, off_t offset);//返回值:讀到的字節數,若已到文件結尾則返回0,若出錯返回-1
ssize_t pwrite(int fd,const void *buf ,size_t nbytes, off_t offset);//返回值:若成功返回已寫的字節數,若出錯返因-1
pread,pwirte,相當于順序調用lseek和read或write,但調用pread,pwrite時無法中斷其定位和讀寫操作,并且不能更新文件指針。
od -c file:查看file的實際內容
文件共享:
文件描述符:每個進程在進程表中都有一個記錄項每個記錄項中有一張打開的文件描述符表(所以才有必要復制文件描述符),每個文件描述符表項關聯:(a)文件描述符標志。(b)指向一個文件表項的指針。
文件表:內核為所有打開的文件維護一張文件表,每個文件表項包含:(a)文件狀態標志(讀、寫、增寫、同步、非阻塞等)。(b)當前文件的偏移量。(c)指向該文件v節點表項的指針。
v節點:每個打開的文件(或設備)都有一個v節點結構。包含了文件類型和對此文件進行各種操作的函數的指針信息。對于大多數文件,v節點還包含了該文件的i節點(索引節點)。這些信息是在打開文件時從盤上讀入內存的,所以所有關于文件的信息都是快速可供使用的。例如,i節點包含了文件的所有者、文件長度、文件所在的設備、指向文件在盤上所使用的實際數據塊的指針等等。
fcntl函數可以改變已經打開文件的性質。
int fcntl(int filedes, int cmd ,....);
cmd:
F_DUPFD 復制一個現存的文件描述符。
F_GETFD or F_SETFD 獲得/設置文件描述符標志
F_GETFL or F_SETFL 獲得/設置文件狀態標志 即open函數中mode的幾種狀態
F_GETOWN or F_SETOWN 獲得/設置異步I/0權限
F_GETLK,F_SETLK or F_SETLKW 獲得/設置記錄鎖
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。