進程:一個正在執(zhí)行的程序的實例。當用戶啟動應用程序時,操作系統(tǒng)會將程序的代碼和數(shù)據(jù)從磁盤加載到內(nèi)存中,并開始執(zhí)行代碼。
通常,系統(tǒng)會同時運行許多進程(用戶啟動的程序、系統(tǒng)自動啟動的進程、不提示用戶而運行的進程)。同一程序可能有多個實例執(zhí)行,此時系統(tǒng)會將每個實例看做不同的進程。

image.png

image.png
進程的地址空間(動態(tài)的):系統(tǒng)為每個進程提供了一段可操作的內(nèi)存。
PID:ProcessID,是標識和區(qū)分進程的ID,它是一個全局唯一的正整數(shù),由系統(tǒng)隨機分配。
PPID:父進程ID,進程都是由父進程衍生出來的。實際上有個PID為1的進程由內(nèi)核創(chuàng)建的init進程,這個進程 是沒有PPID的。
用kill 命令可以殺掉對應PID的進程 。
進程的生命周期
頭文件里有相關的定義
#import <sys/proc.h>

image.png

image.png
iOS中的進程間通信的方式:
-
Port
NSMachPort : Foundation層
CFMachPort : Core Foundation層 ,使用方式
Mach Ports : mach 內(nèi)核層(線程、進程都可使用它進行通信)
scheme
使用open URL 打開app的時候,可以帶參數(shù)。key chain
需要交互的數(shù)據(jù)存放在鑰匙串中,也可以實現(xiàn)不同的app進行數(shù)據(jù)傳遞。剪切板
UIPasteboard