之前看訊號的時候,沒有太注意不同訊號的對比.今天再次看到的時候,突然感覺對一些訊號,非常相似,乃至非常容易混淆.今天週末就抽空總結一下.
一、關閉程序訊號
常見的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解析度可見光遙感成...