Linux系統程式設計 程序控制

2021-10-05 10:55:53 字數 1207 閱讀 8254

for()函式使用

#include #include #include int main(void)  else if (pid == 0)  else if (pid > 0) 

return 0;

}

正確建立n個子程序

#include #include #include int main(void)  else if (pid == 0)  else if (pid > 0) 

}sleep(i); // 保證輸出順序

if (i < 5) else

return 0;

}

父子程序相同處:全域性變數、棧、堆、環境變數、使用者id、宿主目錄、程序工作目錄、訊號處理方式、.data、.text...

父子程序不同處:程序id、fork()返回值、父程序id、程序執行時間、定時器、未決訊號集

父子程序間遵循讀時共享,寫時複製

注意誤區:剛fork()之後相同處不代表共享,比如:父子程序的全域性變數不共享。

父子程序共享:1.檔案描述符(開啟檔案結構體)  2.mmap建立的對映區(程序間通訊)

父子程序fork之後先後執行順序不確定,取決於核心所使用的排程演算法隨機爭奪。

gdb除錯

> gcc main.c -g

> gdb a.out

命令

list 列出**設定斷點,簡寫l

breakpoint 《行號》 設定斷點

breakpoint 《行號》 [if 《條件》] 條件斷點

next 下一步

run 執行

start 單步執行

print 《變數》 列印變數值

set follow-fork-mode child 設定gdb在fork之後跟蹤子程序(fork呼叫前設定生效)

set follow-fork-mode parent 設定gdb在fork之後跟蹤父程序(fork呼叫前設定生效)

Linux系統程式設計 程序控制 三

使用fork或vfork建立子程序以後,子程序呼叫exec函式來執行另外乙個函式。exec函式族 include int execve const char path,char const argv,char const envp int execv const char path,char con...

Linux系統程式設計(7) 程序控制 程序等待

程序等待 父程序對子程序進行程序等待,等待是為了讀取子程序的執行結果 標頭檔案 include include pid t wait int status 返回值 成功返回被等待程序pid,失敗返回 1。引數 輸出型引數,獲取子程序退出狀態,不關心則可以設定成為null wait函式輸乙個阻塞式函式...

Linux系統程式設計 03 程序控制塊PCB

程序控制塊 也叫程序描述符。程序控制塊位於核心空間 sesstion 針對所有的程序 程序組 相似屬性的程序放到一組 檢視程序上下限 book 100ask ulimit a core file size blocks,c 0 data seg size kbytes,d unlimited sch...