day06記憶體管理 檔案管理

2021-08-04 15:03:07 字數 3595 閱讀 6283

2 記憶體管理函式的層次關係

檔案管理

(1)brk函式

#include int brk(void *addr);

函式功能:

主要用於調整動態記憶體的大小,具體的調整方式如下:

當addr > 原來的末尾位址時,表示申請動態記憶體;

當addr = 原來的末尾位址時, 表示動態記憶體不變;

當addr < 原來的末尾位址時, 表示釋放動態記憶體;

注意:

練習:

使用sbrk函式申請記憶體,使用brk函式釋放記憶體, 首先申請乙個int 型別大小的動態記憶體, 存放資料66, 再申請乙個double型別的動態記憶體,存放存放資料3.14,再申請10 個位元組大小的字串空間, 存放資料「hello」, 列印相關資料,最後釋放所有動態記憶體。

(2)mmap函式(暫時了解)
#include void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);

第二個引數:建立對映的長度;

第三個引數:對映的訪問許可權;

prot_extc - 可執行

prot_read - 可讀

prot_write - 可寫

prot_none - 不可訪問

第四個引數:具體的操作標誌;

map_shared - 對映區的資料直接反映到檔案中

map_private - 對映區的資料不會反映到檔案中

第五個引數:檔案描述,暫時給0即可;

第六個引數:檔案中的偏移量,暫時給0即可;

函式功能:

主要用於建立檔案/裝置到虛擬位址的對映;

(3)munmap函式(暫時了解)
#includeint munmap(void *addr, size_t length);

第二個引數:對映區的大小;

函式功能:

主要用於解除引數的指定的對映;

標準c語言 - 使用malloc函式申請, 使用free函式釋放;

| posix標準 - 使用sbrk函式申請, 使用brk函式釋放;

| 作業系統 - 使用mmap函式建立對映,munmap函式解除對映

如:

命令echo - 回顯命令

echo hello

=> 表示列印hello字元

echo hello > a.txt

=>表示將hello字串插入到a.txt檔案中,插入成功

cat a.txt

=>表示檢視檔案a.txt中的內容

echo hello > /dev/null

=>表示將echo命令執行結構丟棄掉

cat /dev/null

=>表示檢視檔案中的弄容,啥也沒有

cat /dev/null > a.txt

=>表示清空檔案中的內容

(1)open函式
#include //types:型別

#include //stat(status):狀態

#include int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);

int creat(const char *pathname, mode_t mode);

第乙個引數:字串形式的路徑名

第二個引數:具體的操作標誌

必須包含以下三個標誌中的乙個

o_rdonly - 唯讀

o_wronly - 只寫

o_rdwr - 可讀可寫

除此之外,還可以按位按或以下標誌:

o_creat - 若檔案不存在則建立,若存在則開啟

o_excl - 與o_creat搭配使用,若檔案不存在則建立,若檔案存在則建立失敗

o_trunc - 若檔案存在則清空檔案中的內容,

第三個引數:用於指定新檔案的建立時的許可權資訊;

當需要建立新檔案是,需要給引數;

當開啟乙個已經存在的檔案時,不需要該引數;

返回值:成功時返回新的檔案描述符,失敗返回-1;

函式功能:

主要用於開啟/建立乙個檔案

注意:

拓展:

ls -l a.txt 的執行結果如下

-rw-rw-r– 1 bbyang bbyang 0 6月 3 14:41 a.txt

-       rw-     rw-     r--             1       bbyang  bbyang      0       6月 3 14:41      a.txt

檔案型別 屬主許可權 屬組許可權 其他使用者許可權 硬鏈結數 屬主名稱 屬組名稱 檔案大小 最後一次修改時間 檔名稱

檔案型別主要有:

- 表示普通檔案

d 表示目錄檔案

其中檔案的主要許可權有:

r - 可讀 4

w - 可寫 2

x - 可執行 1

- - 表示沒有此許可權

(2)close函式
#include int close(int fd);

函式功能:

主要用於關閉引數指定的檔案描述符,讓該檔案描述符不再代表任何乙個檔案, 該檔案描述符可以被再次使用;

——>程式:03close.c

(3)read函式
#include ssize_t read(int fd, void *buf, size_t count);

第乙個引數:檔案描述符,open函式的返回值

第三個引數:期望讀取的位元組數

返回值:成功返回實際讀取的位元組數,返回0表示讀到檔案末尾;失敗返回-1;

每次讀取多少位元組,則檔案讀寫位置前進多少位元組;

函式功能:

主要功能從引數指定的檔案中讀取資料;

(4)write函式
#include ssize_t write(int fd, const void *buf, size_t count);

第乙個引數:檔案描述符,open函式的返回值;

第三個引數:期望寫入的資料大小

返回值:成功返回別寫入的位元組數,返回0表示沒有寫入資料;返回0表示寫入錯誤;

寫入多少位元組則檔案讀寫位置前進多少位元組;

函式功能:

主要用於將指定的資料寫入到指定的檔案中;

day06檔案系統的管理

1.xfs是較高的海量的資料 ext4是日誌檔案系統 ntfs檔案系統,windowds檔案系統 掛載,做隱射,原路徑,目標路徑 坐騎的作用是將左邊的檔案鏈結到右邊,讓右邊的檔案和左邊的相同 卸除解除安裝,l是強制進行 第六天檔案磁碟等了解 硬碟存放檔案內容儲存下來,檔案內容,檔案的檔名稱,檔案許可...

資料探勘 day06

shoot射擊遊戲專案四 1.需求分析 a 將窗體的大小設定為常量 b 畫物件 想畫物件先獲取到,針對每乙個物件都能夠獲取到,獲取到的行為是共有的,設計到父類中 flyingobject每乙個物件得到的行為都是不一樣的,設計了乙個抽象方法 getlmage 在不同狀態下,得到不同的 狀態 設計到父類...

Day06 物件導向

方法回顧public static 方法型別 方法名 變數型別i 變數,變數型別ii 變數,區域性變數沒有變數不會有預設值。物件導向開發 類與物件public class student public void study 區域性變數與成員變數的區別 私有化private this的使用 this....