linux堆區記憶體與檔案操作總結

2021-10-22 02:54:48 字數 1958 閱讀 2694

二:檔案操作

三:程序替換

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