關於ctrl+c 和 ctrl+z的區別

關於ctrl+c 和 ctrl+z的區別

昨天和朋友討論到linux下ctrl+c和ctrl+z哪個是終止程序,哪個是掛起程序的問題。於是自己做了一個小小的測試,用一個簡單的hello程序作爲測試,其源代碼爲:


 #include "stdio.h" 
 /********************************************************************************
 *  Description:
 *   Input Args:
 *  Output Args:
 * Return Value:
 ********************************************************************************/
 int main (int argc, char **argv)
 {
     printf("Hello world!\n");
     while(1)
     {
     }
     return 0;
 } /* ----- End of main() ----- */

從源碼中可以看出,程序打印完”Hello world!”之後遍會進入到while死循環,直到用戶主動終止程序。

於是編譯之後我執行該程序,用ps命令可以看到有一個進程號爲3049的名爲./hello的進程。
這裏寫圖片描述

這裏寫圖片描述

然後我使用ctrl+z命令退出程序
這裏寫圖片描述

ctrl+z退出程序之後再次使用ps命令查看進程,發現進程號爲3049的./hello進程依然存在。所以證明ctrl+z只是將程序掛起,並沒有真正的退出。
這裏寫圖片描述

我再次執行hello程序,再次查看進程,發現多了一個進程號爲3079的./hello進程。
這裏寫圖片描述

這裏寫圖片描述

剛剛使用的是ctrl+z退出程序,發現程序並沒有真正的退出,進程中依然存在它 身影。那麼現在我使用ctrl+c退出程序。
這裏寫圖片描述

ctrl+c退出之後再次查看進程,發現第二次創建的進程號爲3079的./hello進程沒有了,說明ctrl+c確實使得程序終止,而不是簡單的退出。
這裏寫圖片描述

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