Linux 兩組訊號對比 關閉和停止程序訊號

2022-02-13 09:44:33 字數 1845 閱讀 5167

之前看訊號的時候,沒有太注意不同訊號的對比.今天再次看到的時候,突然感覺對一些訊號,非常相似,乃至非常容易混淆.今天週末就抽空總結一下.

一、關閉程序訊號

常見的4中關閉程序訊號是sigkill,sigint,sigterm,sigquit.

sigkill,就是為了關閉程序用的,無法捕獲以及忽略.場景是,管理員把一些占用資源的程序或者無法掌控的孤兒程序殺死.

sigint,interrupt(中斷)程序,這個是可以捕獲以及忽略。可以使用ctrl+c發出訊號,直接發給父程序以及子程序,這樣的話就可以把這個程式所有的程序都可以關閉掉。

sigterm,terminate(終止)程序,這個也是可以捕獲以及忽略的。和sigint相比,就是沒有相應的鍵盤控制命令。如果要去關閉所有的程序的話,只能挨個的發給所有的程序。

sigquit,quit(退出)程序,這個也是可以捕獲以及忽略的。可以使用ctrl+\發出訊號,直接發給父程序以及子程序。如果是不捕獲的話,他就會產生core檔案。

鍵盤快捷鍵最大的好處就是發給所有的程序。

最下面我們用程式來驗證一下。

第一組 關閉程序訊號 程式驗證

先上**。

#include

#include

#include

#include

void process(int signo)else{

printf("parent pid:%d\n",getpid());

while(1){

sleep(1);

return 0;

sigkill比較簡單,我們就不再驗證了。先驗證一下sigint。

可以看到輸入ctrl+c的時候,父子程序都收到相關的訊號。但是我輸入kill -2 742的時候,只有父程序收到了,不會傳給子程序。

下面我們驗證sigquit產生core。

可能部分的機器預設是不產生,我們需要輸入幾個命令。

#設定core檔案大小,這裡是無限制

ulimit -c unlimited

#core後面跟著pid

sudo sysctl kernel.core_uses_pid=1

#core檔案存放路徑,放在當前的資料夾下

sudo sysctl kernal.core_pattern=core

二、停止訊號

這組訊號對比,相對上一組就簡單多了.

sigstop,程式掛起,沒有相應的快捷鍵,不能**獲以及忽略。

sigtstp,程式掛起,快捷鍵ctrl+z,可以**獲以及忽略。

如果掛起之後,怎麼再次讓他們啟動呢。簡單一點,我們可以輸入jobs,然後看一下他們的索引值。然後fg啟動他們。

我們也可以給他們傳送sigcont訊號,讓他們啟動起來。不過這個時候,他們的只能在後台執行了。

這個時候,就可以看到他們的狀態從t變成了s,從停止變成了執行狀態。

Linux 兩組訊號對比

之前看訊號的時候,沒有太注意不同訊號的對比 今天再次看到的時候,突然感覺對一些訊號,非常相似,乃至非常容易混淆 今天週末就抽空總結一下 常見的 中關閉程序訊號是sigkill,sigint,sigterm,sigquit.sigkill,就是為了關閉程序用的,無法捕獲以及忽略 場景是,管理員把一些占...

Linux 兩組訊號對比 關閉和停止程序訊號

之前看訊號的時候,沒有太注意不同訊號的對比 今天再次看到的時候,突然感覺對一些訊號,非常相似,乃至非常容易混淆 今天週末就抽空總結一下 一 關閉程序訊號 常見的 中關閉程序訊號是sigkill,sigint,sigterm,sigquit.sigkill,就是為了關閉程序用的,無法捕獲以及忽略 場景...

兩組資料告訴你什麼叫 海量

第一組 如果對全球陸地進行可見光正射航空遙感成像,按照15cm pixel的解析度,那麼將得到約22pb的資料。第二組 如果對全球陸地進行15cm pixel解析度的可見光正射航空遙感成像,對街景按照2cm pixel解析度進行可見光遙感成像,對建築物室內進行0.5cm pixel解析度可見光遙感成...