Linux 兩組訊號對比

2022-03-28 20:38:20 字數 1515 閱讀 8798

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

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

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

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

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

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

訊號是否可以**獲

鍵盤快捷鍵

是否產生core檔案

sigkill

sigint

ctrl+c

sigterm

是sig

quit

是ctrl+\

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

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

先上**。

#include #include #include #include void process(int signo)

void cleanup()

int main()

}else

}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解析度可見光遙感成...