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