一 記憶體管理
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...