二:檔案操作
三:程序替換
malloc只是在虛擬位址記憶體上分配記憶體,並沒有分配真實的實體地址空間,物理空間的分配是在使用的時候。
如果交換分割槽沒有開啟,則malloc能夠申請的堆區空間有大小限制,如果開啟了交換分割槽,則由交換分割槽、記憶體大小,虛擬位址空間共同決定。
fork方法執行成功後,並沒有立即將空間複製出來,而是在修改空間上的資料時,才會一點一點的分配空間。
父子程序共享fork之前開啟的檔案描述符(操作檔案的讀寫游標),如果同時訪問,則可能會出現問題。
有關linux系統呼叫:open read write close lseek
int
open
(const
char
* pathname,
int flags)
;//用於開啟乙個已存在的檔案
intopen
(const
char
* pathname,
int flags,mode_t mode)
;//用於新建乙個檔案,並設定訪問
ssize_t read
(int fd,
void
* buf, size_t count)
;
引數介紹:
fd: 對應開啟的檔案描述符
buf :存放資料的空間
count: 計畫一次從檔案中讀多少位元組資料
返回值:為實際讀到的位元組數
ssize_t write
(int fd,
const
void
* buf, size_t count)
;
引數介紹:
fd :對應開啟的檔案描述符
buf :存放待寫入的資料
count: 計畫一次向檔案中寫多少資料
int
close
(int fd)
;
引數介紹:
fd :要關閉的檔案描述符
乙個程式完成對乙個普通檔案的複製:
#include
#include
#include
#include
#include
#include
intmain()
;int fdr =
open
("fork.c"
,o_rdonly)
;assert
(fdr!=-1
);int fdw =
open
("newfork.c"
,o_wronly|o_creat,
0600);
assert
(fdw!=-1
);int n =0;
while
((n=
read
(fdr,buff,
256)
)>0)
close
(fdr)
;close
(fdw)
;exit(0);}
程序替換:替換的是程序所執行的指令集合和資料。
Linux檔案操作 檔案I O 記憶體對映
提出記憶體對映i o概念的根本原因是為了解決讀寫檔案的效率問題。如果乙個程式需要大量的磁碟io時,記憶體對映io往往能夠使程式執行的速度有很大地提高,記憶體對映i o也可以算作是一種空間換時間的機制。linux使用mmap函式建立乙個磁碟檔案到記憶體的對映,函式原型為 include void mm...
Linux 檔案對映虛擬記憶體操作
目錄 把硬碟資料搬到記憶體中去操作的方式被稱為檔案對映虛擬記憶體,由於記憶體訪問的特殊性,資料到了記憶體後可提高訪問和操作的速率。標頭檔案 函式原型 void mmap void start,size t length,int prot,int flags,int fd,off t offset i...
Linux目錄與檔案操作
mkdir path 在home目錄下新建乙個test目錄 midir home testcd path 切換到home目錄 cd home 返回上一層目錄 cd 切換目錄時使用tab鍵進行補全 mv path1 path2 將test目錄從 home下移動到 var tmp下 mv home te...