python練習筆記——利用信號signal處理僵尸進程

1 signal處理僵尸進程的基于語法

利用信號signal處理僵尸進程的方法:signal(SIGCHLD,SIG_IGN),該方法也是第三種處理僵尸進程的方法。

SIGCHLD:子進程狀態改變后產生此信號,父進程需要調用一個wait函數以確定發生了什么。

?

1)SIG_IGN:信號被無視(ignore)或忽略,在該狀態下,調用進程的子進程將不產生僵尸進程。

? ? 該種模式下的子進程狀態信息會被丟棄,也就是自動回收,所以不會產生僵尸進程,但問題也就來了,若調用wait、waitpid函數時無法捕捉到子進程狀態信息了,也就會阻塞到所有的子進程結束;并返回錯誤ECHILD,也就是沒有子進程等待。

2)SIG_DFL:進程采用默認(default)行為處理,而默認的處理方式是不理會該信號,但也不會丟棄子進程的狀態,所以此時不用wait、waitpid對其子進程進行狀態信息回收,則會產生僵尸進程。

2?unix中僵尸進程的含義

凡是父進程沒有調用wait函數獲得子進程終止狀態的子進程在終止之后都是僵尸進程,在這個概念中關鍵一點就是父進程是否調用了wait函數。

3?SIGCHLD信號

簡單地說,子進程退出時父進程會收到一個SIGCHLD信號,默認的處理方式是忽略該信號,而常規的做法是在這個信號處理函數中調用wait函數獲取子進程的退出狀態。

4、既然在SIGCHLD信號的處理函數中要調用wait函數族,為什么有了wait函數族還需要使用SIGCHLD信號?

unix中的信號處理是采用異步處理機制;

一般而言,父進程在生成子進程之后會有兩種情況:一是父進程完成自己的任務,二是父進程不做任務,一直在wait子進程退出。

SIGCHLD信號就是為第一種情況準備的,它讓父進程去做別的任務,而只要父進程注冊了處理該信號的函數,在子進程退出時就會調用該函數,在函數中wait子進程得到終止狀態之后再繼續做父進程的事情。

?注:

1)凡父進程不調用wait函數族獲得子進程終止狀態的條件下,子進程在退出時都會變成僵尸進程

2)SIGCHLD信號可以異步通知父進程有子進程退出。

?

參考:

signal(SIGCLD,SIG_IGN)

linux下的僵尸進程處理SIGCHLD信號

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539024.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zookeeper應用:服務端上下線

需求 客戶端感知服務器的上下線。 示意圖 步驟 服務端: 1、所有機子向Zookeeper注冊,注冊znode為臨時的。 2、有機子下線,連接斷開后被Zookeeper自動刪除,觸發監聽事件。 3、有機子上線,觸發監聽事件。 客戶端&am…

哈希表查找失敗的平均查找長度_你還應該知道的哈希沖突解決策略

本文首發于 vivo互聯網技術 微信公眾號 鏈接:https://mp.weixin.qq.com/s/5vxYoeARG1nC7Z0xTYXELA作者:Xuegui Chen哈希是一種通過對數據進行壓縮, 從而提高效率的一種解決方法,但由于哈希函數有限,數據增大等緣故,哈希…

hive 創建訪問用戶_hive創建角色并賦權

1 角色管理命令1.1 創建角色創建一個新角色,需要 admin 用戶執行CREATE ROLE role_name;1.2 刪除角色刪除一個角色,需要 admin 用戶執行DROP ROLE role_name;1.3 顯示當前角色顯示用戶當前角色列表SHOW CURRENT ROLES;1.4 設定角色如果指定了role_name&a…

python 正則替換_5分鐘速覽Python正則表達式常用函數!五分鐘就掌握它!

導讀:正則表達式是處理字符串類型的"核武器",不僅速度快,而且功能強大。本文不過多展開正則表達式相關語法,僅簡要介紹python中正則表達式常用函數及其使用方法,以作快速查詢瀏覽。01 Re概覽Re模塊是python的…

MFC鼠標OnMouseHover使用

ON_WM_MOUSEHOVER消息要生效,要配合ON_WM_MOUSEMOVE一起使用.代碼如下:void CYuButton::OnMouseMove(UINT nFlags, CPoint point) {// TODO: 在此添加消息處理程序代碼和/或調用默認值TRACKMOUSEEVENT tme { 0 };tme.cbSize sizeof(TRACKMOUSEEVENT);tme.dwFlags TME_HOVER…

oracle 分組_大數據分組怎樣才會更快

分組是數據庫的常見運算,無論數據如何準備,通常都需要將所有數據遍歷。建立索引這時是不起作用的,存儲格式才是決定遍歷效率的主要因素。數據庫中數據的存放雖然是二進制格式的,但普遍IO性能差,庫內遍歷快,…

java下拉樹_參數模板中下拉樹級聯下拉數據集查詢

背景說明在參數表單的制作中會遇到各種各樣的需求,如為了方便參數的輸入,需要將輸入框設計成樹狀;若參數模板中有兩個輸入框,每個輸入框對應的參數有某種關系,前一個輸入框輸入參數后,后一個輸入框自動關聯…

java8 list 行轉列_太贊了,Intellij IDEA 竟然把 Java8 的數據流問題這么完美的解決掉了!

使用 IntelliJ IDEA 來幫忙構建你自己的實時模板連接分組《Java 2019 超神之路》《Dubbo 實現原理與源碼解析 —— 精品合集》《Spring 實現原理與源碼解析 —— 精品合集》《MyBatis 實現原理與源碼解析 —— 精品合集》《Spring MVC 實現原理與源碼解析 —— 精品合集》《Spr…

線程run方法和start方法的區別

區別 run() 只是一個普通的方法調用,不會開啟新的線程。 start() 會開啟新的線程,分配新的資源。里面的變量互不影響。 實例 package multithreading;public class MyThread extends Thread {String flag;public MyThread(String flag) {this.flag…

字典的拼接方法

剛看到覺得很簡單 試著用 d3 dict1 dict2 就解決了 結果 報類型錯誤 后來想去遍歷 在組合越想越麻煩 下面分享幾個方法 d1 {"name":"luoyong","age":36}d2 {"class":"AID1712","start":"python"}方…

python反射、閉包、裝飾器_python 閉包裝飾器(一)

一、閉包1.舉例defouter():x 10def inner(): #內部函數print(x) #外部函數的一個變量returninner#調用inner()函數的方法outer()() #法一fouter()f()#法二注意:inner()是局部變量,在全局范圍不可調用(即不能直接調用inner()函數),但是在法二中…

java list集合自定義排序_Java 通過 Comparator comparing 對 list 自定義 排序

摘要:在日常開發中,經常會用到排序算法,這里記錄下日常使用比較多的排序方法,其中包括按指定指定:正序、倒序排序,還有按自定義字段排序的方法,方便日后查看;一:按指定字…

beautifulsoup爬取網頁中的表格_用 Python 爬取網頁

來自公眾號:優達學城Udacity作者:Kerry Parker編譯:歐剃作為數據科學家的第一個任務,就是做網頁爬取。那時候,我對使用代碼從網站上獲取數據這項技術完全一無所知,它偏偏又是最有邏輯性并且最容易獲得的數據…

Java中Runnable和Thread的區別

概述 Runnable 是接口。 Thread 是類,且實現了Runnable接口。 Thread部分源碼 public class Threadimplements Runnable {private static class Caches{static final ConcurrentMap subclassAudits new ConcurrentHashMap();static final ReferenceQueue subcla…

python 神經網絡工具_神經網絡15分鐘入門!使用python從零開始寫一個兩層神經網絡...

本篇是該系列的第三篇,建議在閱讀本篇文章之前先看前兩篇文章。在本文中將使用python實現之前描述的兩層神經網絡,并完成所提出的“象限分類”的問題。需要注意的是,雖然標題叫做神經網絡15分鐘入門,但是到這篇文章,對…

12.3目錄結構

目錄結構 設計好目錄結構 可讀性高可維護性高比如一個Foo項目Foo/--- bin/--- foo--- foo/--- tests/--- _init__.py--- test_main.py--- init.py--- main.py---doc--- conf.py---abc.rst--- setup.py--- requirement.txt--- README簡要解釋一下: bin/:存放項目的一…

pyecharts添加文字_超燃的文字云效果,用Python就能輕松get!

本文轉載自公眾號:數據森麟(ID:shujusenlin)作者:葉庭云鏈接:https://blog.csdn.net/fyfugoyfa/ 01 / 詞云圖詞云圖是一種用來展現高頻關鍵詞的可視化表達,通過文字、色彩、圖形的搭配,產生有沖擊力地視覺效…

同步關鍵詞synchronized

概述 synchronized是java中的一個關鍵字,也就是說是Java語言內置的特性。 synchronized( 一個任意的對象(鎖) ){ 代碼塊中放操作共享數據的代碼。 } public synchronized int getIndex() {return 1;}public static synchronized int getN…

python連接mysql用哪個模塊_Python連接MySQL數據庫之pymysql模塊使用

Python3連接MySQL本文介紹Python3連接MySQL的第三方庫--PyMySQL的基本使用。PyMySQL介紹PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務器的一個庫,Python2中則使用mysqldb。Django中也可以使用PyMySQL連接MySQL數據庫。PyMySQL安裝pip install pymysql連接數據…

mysql 創建視圖 主鍵_MySQL數據庫基礎操作命令,本文助你更上一層樓!

今天介紹的是關于Mysql數據庫一些操作的基礎命令用戶與權限創建用戶mysql>create user test identified by BaC321#; 修改密碼5.5版本及以前的命令mysql>set password for testpassowrd(!1A2#3); 5.6及以上命令mysql>update mysql.user set authentication_stringpass…