迅爲i.MX6ULL終結者進程基礎-進程創建

進程指正在運行的程序,資源分配的最小單位,可以通過“ps ”或“top”等命令查看正在運行的進程,線程是系統的最小調度單位,一個進程可以擁有多個線程,同一進程裏的線程可以共享此進程的同一資源。本章代碼在process/目錄下。
進程類型:
1.交互進程:由shell啓動,用戶和計算機進行問答的進程。
2.批處理進程:不與特定終端相關聯,將任務提交到等待隊列按順序執行的進程。
3.守護進程:後臺運行的特殊進程,用戶不能和它進行會話。
進程的三種狀態:

1.運行態,正在運行或在運行隊列中等待。
2.可中斷等待態,休眠, 在等待申請的資源有效或等待中斷,信號喚醒。
3.不可中斷等待態,休眠等待資源有效,不能被中斷或信號喚醒。
4.終止態,進程被停止或者被跟蹤狀態,收到SIGCONT信號時,又會恢復運行狀態。
5.殭屍態,進程因某種原因而中止運行,但進程描述符仍存在,不可被Kill。
如果想銷燬某一進程,可在終端輸入“ps -elf”查看進程號,如圖 66.2:

如果要銷燬qtcreator進程,使用“kill -9 3001”可以銷燬它,

1進程創建
所有的進程都是由其他進程創建(除了pid爲0號的idle進程),pid號爲1的init進程是系統啓動後運行的第一個進程,是所有進程的父進程,init進程會初始化一部分系統服務,創建其他進程。
創建新進程的那個進程稱爲父進程,新進程稱爲子進程,父進程和子進程擁有相同的代碼段數據段,有各自獨立的地址空間。採用寫時拷貝技術,即創建的新進程不會立即把父進程的資源空間複製過來,只有在修改時纔會複製資源,另外父進程掛起的信號和文件鎖不會被子進程繼承。
子進程結束後,它的父進程要回收它的資源,否則就會成爲殭屍進程 。
如果父進程先結束,子進程會被init進程收養,稱爲孤兒進程。
終端輸入“ps -el”查看進程狀態,PID爲進程號,PPID爲此進程的父進程號,如圖 1.1,1505號進程的父進程爲1366進程。


getpid():獲取進程PID,

返回值爲PID號。
fork():系統調用,創建一個進程,
#include
pid_t fork(void);
調用成功父進程返回子進程號,子進程返回0,失敗返回-1。
如以下代碼:
for.c:

打印結果:

程序執行過程中第一次調用fork()進程2531創建子進程2532;第二次fork(),進程2531創建子進程2533,進程2532創建2534,創建過程如圖 1.3:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章