關於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確實使得程序終止,而不是簡單的退出。