1.process_flag(trap_exit,false),是預設行為:
「a程序」和「b程序」相互鏈結,(1)如果「a程序」異常退出「b程序」也隨之退出;(2)如果「a程序」正常退出,「b程序」不做任何處理,繼續執行。
2.process_flag(trap_exit,true):
「a程序」和「b程序」相互鏈結,「b程序」設定了process_flag(trap_exit,true),這樣「b程序」接受到「a程序」的退出訊號,並自行處理。
捕獲程序退出的程式設計模式:
模式一:我不在乎建立的程序是否崩潰
建立乙個並行程序,當被生成的程序崩潰時,當前程序不會察覺
pid = spawn(fun).
模式二:如果我建立的程序非正常的崩潰,我也消亡
pid = spawn_link(fun).
模式三:如果我建立的程序崩潰,我需要處理錯誤
process_flag(trap_exit, true),
pid = spawn_link(fun),
process_flag(trap_exit,true)與try link(pid) catch
process_flag(trap_exit,true)時不能try link(pid) catch
process_flag(trap_exit,true)把乙個程序變成系統程序,捕捉推出訊號,並將這些訊號和其他訊息一樣儲存在程序信箱中。
在process_flag(trap_exit,true)時,不能對link(pid)進行try...catch,無論pid是否存在都catch不到錯誤。
當pid不存在時,程序信箱將收到的訊息,同時程序繼續執行,而不是報錯中斷。
在process_flag(trap_exit,false)時,link(pid),當pid不存在時可以catch到error:_。
erlang鏈結程序之間的關係
最近學習erlang,看了一些書籍和文件,對 鏈結程序 之間的退出機制,一直也不是很明白,今天動手做了乙個實驗。大致分為兩種情況 1.process flag trap exit,false 也是預設行為 a程序 和 b程序 相互鏈結,1 如果 a程序 異常退出 b程序 也隨之退出 2 如果 a程序...
多個程序之間的關係
每個程序都有乙個統一標識。每一組程序也可以有乙個標識。用getpgrp 函式獲取程序組id。include include pid t getpgrp void 用setpgid pit t pid,pid t pgid 成功時返回0失敗時返回 1 建立乙個新的程序組或者將乙個程序加入到乙個程序組中...
執行緒和程序之間的關係
一 程序 每個程式都會有程序負責管理程式功能的各個功能的進行,程序只有乙個,且至少會有乙個 二 執行緒 每個程序裡面至少有乙個執行緒,稱之為主線程,除此之外還會有其他的執行緒,稱之為分執行緒,執行緒是控制任務執行的祖先歐單位 二者之間的聯絡 程序負責各個執行緒的執行,當程式執行,程序啟動,程式關閉,...