linux環境程式設計學習

2021-10-23 13:27:20 字數 1445 閱讀 5637

在開頭,我應該反思一下,之前學習部落格寫的都不怎麼勤。主要是因為我覺得寫部落格這種東西很沒用,不過是像流水賬一樣把之前學過的東西再寫一遍。但現在想想,我應該調整這一觀念,用部落格記錄要學的東西,而不是已經學過的東西。
函式:

void *sbrk(intptr_t increment);

功能:根據增量引數調整指標的位置。

increment:增量

0 獲取指標的位置

<0 取消對映

>0 對映記憶體

返回值:該指標原來的位置

int brk(void *addr);

功能:直接用addr的值修改指標的位置

返回值:本次移動的多少個位元組

>位置指標,對映記憶體

《位置指標,取消對映

int 成功返回0,失敗返回-1

brk/sbrk都有單獨對映,取消對映的功能,但配合使用最方便。

void *mmap(void *addr,size_t length,int prot,int flags,int fd,off_t offset)

功能:對映虛擬記憶體與物理記憶體,sbrk和brk底層呼叫的就是它們。

addr:對映記憶體區域的起始位址,可以自己指定,如果是null則系統幫你指定

length:對映的位元組長度

prot:對映的許可權

prot_exec

prot_read

prot_write

prot_none

flags:對映標誌

map_fixed 如果提供的addr無法對映,則失敗,系統不會自動調整。

map_shared 對對映區域的寫操作直接反映到檔案中。

map_private 對對映區域的寫操作只反映到檔案的緩衝區中,不會真正寫入檔案

map_anonymous 將虛擬對映到物理記憶體,而不是檔案,忽略fd等引數。

map_denywrite 拒絕檔案的寫入操作

map_file

fd:檔案描述符

offset: 檔案的偏移量

返回值: 成功返回對映後的記憶體位址,失敗返回0xffffffff

int munmap(void *addr,size_t length);

功能:取消對映

addr: 對映記憶體區域的起始位址

length: 記憶體位元組數

返回值: 成功返回0,失敗返回-1

記憶體管理總結

1.mmap/munmap 底層不維護任何東西,只返回乙個對映後的記憶體首位址所對映的記憶體位於堆中

2.brk/sbrk底層維護乙個指標,記錄所對映的記憶體結尾,所對映的記憶體也位於堆中,底層呼叫的是mmap/munmap。

3.malloc/free底層維護乙個雙向鍊錶和必須的控制資訊,所對映的記憶體也位於堆中,底層呼叫的是brk/sbrk

任務設計乙個基於順序表的棧 未完成

Linux程式設計,vim vi環境

i進入插入模式,按esc鍵,進入命令模式。一 vim複製 剪下和貼上命令 複製稱為yank y 剪下稱為delete d 貼上稱為put p 一 複製 yanking 需要在檢視的環境之下 1.move,選擇要複製的內容 按y 2.v,選擇要對齊的內容按下 3.yy yank 複製 當前行,包括換行...

Linux 環境程式設計 訊號列表

在 linux 下,每個訊號的名字都以字元 sig 開頭,每個訊號和乙個數字編碼相對應,在標頭檔案 signum.h 中,這些訊號都被定義為正整數。訊號名定義路徑 usr include i386 linux gnu bits signum.h 要想檢視這些訊號和編碼的對應關係,可使用命令 kill...

linux環境下網路程式設計

參考 socket是網路程序的pid,由執行程序的計算機的ip位址和程序使用的埠組成。非同步狀態下connect不阻塞,直接返回 1,connect返回 1是對的 然後通過select進行判斷是否連線上 同步狀態下connect阻塞,系統莫認時間75秒後,返回成功或失敗 tcp程式設計的流程 伺服器...