UC學習day05 記憶體管理 檔案基本操作

2021-09-22 08:21:59 字數 2429 閱讀 3310

一 記憶體管理

cat /proc/程序的pid/maps

$$ 獲取當前程序的pid

什麼是程序的pid.程序的身份證號就是程序的pid.

如何獲取程序的pid?

getpid(2)

#include

#include

pid_t getpid(void);

pid_t getppid(void);

棧段的概念

棧幀的概念

每個函式都有自己的棧幀.

函式呼叫的時候有棧幀,函式呼叫完畢和函式對應的棧幀也就消失了.

從函式呼叫到函式的結束 函式的生命週期

如果變數的空間分配在棧幀裡,變數的定義執行的時候,為變數分配空間,函式結束的時候,這種變數的空間被**.變數結束了.

變數的生命週期

區域性變數 形參

程序的生命週期

從程序開始執行到程序執行完畢

變數的作用域

變數的作用域和生命週期

全域性變數 靜態的區域性變數 資料段 程序

自動的區域性變數 形參 棧幀 函式

二 檔案的基本操作

庫函式 對檔案操作 fopen(3) fclose(3) fgetc(3) fputc(3) fseek(3)

系統呼叫 對檔案操作 open(2) read(2) write(2) close(2) lseek(2)

#include

#include

#include

int open(const char *pathname, int flags,…);

功能:開啟並且可能建立乙個檔案

引數:pathname:指定了要開啟的檔案的路徑

flags:

三選一:

o_rdonly 唯讀

o_wronly 只寫

o_rdwr 可讀可寫

檔案的建立標記和身份標記可以按位或到flags中

檔案建立標記

o_creat 檔案不存在,建立檔案.當這個建立標記出現在flags中的時候,mode必須被提供.mode代表新建檔案的許可權.

mode最終的結果可能被修改.被程序的umask.(mode & ~umask)

o_excl 如果和o_creat一起被指定在flags中,建立的檔案存在的時候,報錯.

o_trunc 如果檔案存在,將檔案的內容清空為0

mode:指定了新建檔案的許可權

返回值:

錯誤 -1 errno被設定

成功 返回新的檔案描述符 當前程序未使用的最小的檔案描述符

補充知識點:

…:可變引數.引數的個數和型別取決於…前邊的那個引數.

int printf(const char *format, …);

printf(「hello world」);

printf(「name=%s\n」,name);

printf(「name=%s\tval=%d\n」,name,val);

檔案描述符?

檔案描述符是乙個》=0的整數

程序 程序其實就是程式執行過程中,對計算機資源使用的描述.

每個程序都有自己的pid.每個程序也有自己的戶口本.(pcb)process

control block

0 標準輸入 鍵盤 stdin_fileno

1 標準輸出 顯示器 stdout_fileno

2 標準錯誤輸出 顯示器 stderr_fileno

檔案的許可權

-rw-rw-r-- 1 tarena tarena 0 mar 27 16:10 tt

最前邊的字元代表檔案的型別

rw-rw-r–

r讀 w 寫 x 可執行

有三組rwx.第一組代表檔案擁有者的許可權 屬主 u

第二組代表屬組的許可權 g

第三組代表其他人的許可權 o

a=u+g+o

chmod a-x file

rwx rw-rw-r–

111 110110100 0664

程序的umask

umask許可權掩碼

0002

-------w-

000000010

rw-rw-rw-

-------w-

rw-rw-r–

rw-rw-rw-

r–r--r–

-w–w--w-

0666 0002

mode&~umask

000000010

111111101

110110110

110110100

close(2)

#include

int close(int fd);

功能:關閉乙個檔案描述符

引數:fd 指定要關閉的檔案描述符

返回值:

成功 0

錯誤 -1 errno被設定為相應的錯誤碼

C 學習筆記 day05

1 變數的儲存 1 記憶體是一塊空間,把其中的每個位元組做了編號,為了以後計算機能通過編號找到資料 2 編址方式 絕對編址 在整個程式中使用 相對編址 位元組相對於邏輯0偏移量,在程序中使用 4 儲存位址 指標 儲存變數的位址 指標的型別由將要儲存的位址的變數型別決定 int 只能儲存int變數的位...

Python學習筆記day05

高階函式 課後練習 不可變的資料型別一定可雜湊 hash 內建函式可以判斷某個型別是否可雜湊 s1 s2 s3 s4 print s1,s2,s3的交集 s1.intersection s2,s3 print s1,s2,s3的交集 s1 s2 s3 print s1,s2,s3的並集 s1.uni...

機器學習 day05 三

1.相關匯入 模組的匯入 匯入決策樹 from sklearn.tree import decisiontreeclassifier 匯入資料集 from sklearn import datasets 匯入 分割訓練集和分割測試集 網格搜尋 from sklearn.model selection...