Process
正常終止程序是什麼意思?
在考試中是這樣說的:
給出程序可以正常終止的 2 種不同方式。描述差異。
正常終止是什麼意思?
在此上下文中使用的術語“通常”通常意味著執行程序在成功完成其所有指令時退出,而不會被信號殺死或意外崩潰。例如:
Ctrl+C
在命令find
執行並且find
程序接收SIGINT
信號時被命中。處理此信號是特定於實現的,但通常這意味著正常終止程序。程序的正常終止發生在從作為程序中最後執行的語句C
的函式成功返回時。main
這與例如未完成所有指令並以非確定性方式退出的過程形成對比。這可能是由程序錯誤引起的,也可能是由其他程序發出的殺死它的信號引起的。異常終止通常在程序中實現的邏輯中確定,例如子程序以某個返回值中止/退出到父程序
x
,表明執行中的某些狀態或事件不是“正常”的。例如:一個程序接收到SIGKILL
信號。該信號無法處理並終止程序。這裡的程序抽像類似於程序化函式,因為它們都共享向呼叫程序(例如shell)返回值的能力。這些返回值的語義定義了“成功”或“不成功”呼叫的限定條件。所以在這種情況下,程序員負責定義或使用這些語義。
舉一個具體的例子:執行的命令
bash
最終會在終止時返回一個值給它的呼叫者。這裡,除0
表示命令異常終止之外的任何值。bash
您可以檢查變數以$?
查看最後執行的語句的返回值。當控制腳本中的執行流程時,使用此返回值可能很有用,例如防止從不存在的文件等讀取。在談論終止程序時,還需要考慮其他一些事情,例如釋放分配的地址空間以及記憶體中的相關資源,以及作業的 cpu 調度,但這是另一章。