亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中怎么實現一個信號中斷系統

發布時間:2021-06-29 16:52:49 來源:億速云 閱讀:182 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關PHP中怎么實現一個信號中斷系統,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

PHP中怎么實現一個信號中斷系統
中斷系統跟PHP沒有關系啊,不過PHP官方的pcntl擴展支持了,一般把正在執行的程序稱為主程序,當中斷源【比如鍵盤按下ctrl+c,ctrl+z等產生的硬件中斷事件】發起一個中斷請求事件【中斷信號】,主程序會接受這個中斷請求并停止當前正在運行的程序,然后轉到中斷服務程序去運行【中斷響應】,中斷服務程序也稱為中斷處理程序,程序打斷的地方稱為斷點,中斷服務程序處理完成后返回斷點處繼續執行,稱為中斷返回。

PHP中怎么實現一個信號中斷系統

以上就是一個完整的中斷處理過程。

中斷源
硬件產生的中斷:鍵盤【大部分人只能接觸這些啦,如ctrl_c,ctrl+z產生的中斷SIGINT,SIGTSTP等】
軟件產生的中斷:某個進程的子進程退出產生中斷,定時信號,或是通過kill發出的中斷或是在一個進程向另一個進程發出的中斷,文件描述符變化產生中斷等。

中斷信號:
PHP中怎么實現一個信號中斷系統
信號列表說明

PHP中怎么實現一個信號中斷系統
PHP中怎么實現一個信號中斷系統
PHP中怎么實現一個信號中斷系統

中斷處理:
1、執行默認動作
2、忽略
3、執行用戶自定義的信號處理函數 【捕獲】

中斷信號的處理例子【PHP手冊】

echo "安裝信號處理器...\n";
pcntl_signal(SIGHUP,  function($signo) {//中斷處理程序
    echo "信號處理器被調用\n";
});

echo "為自己生成SIGHUP信號...\n";
posix_kill(posix_getpid(), SIGHUP);//產生中斷請求

echo "分發...\n";
pcntl_signal_dispatch();

echo "完成\n";

PHP中怎么實現一個信號中斷系統

信號集和阻塞:
1、信號遞達時處理的動作
2、信號未決集
3、信號阻塞集

進程可以選擇阻塞某個信號,阻塞的信號,當產生時將會放在未解決集,除非已經解除阻塞,才能捕獲到。
信號集操作
1、初始化一個信號集 【sigemptyset】
2、添加/刪除信號 【sigaddset,sigdelset】
3、判斷某個信號是否屬于某個集合里 【sigismember】
4、信號集阻塞函數 sigprocmask 【pcntl_sigprocmask】
5、未決信號集sigpending
6、信號處理函數signal,sigaction【pcntl_signal】

信號阻塞測試:【信號無法遞達,只能在未決集合里,可以查看/proc/PID/status對信號的處理】
PHP中怎么實現一個信號中斷系統

檢測一個進程是否存在【向進程組發送信號】
posix_kill(posix_getpid(), 0);

信號【軟中斷】的局限性:
1、信號的系統開銷太大。
2、發送信號的進程要進行系統調用。
3、內核要中斷接受信號的進程,而且要管理它的堆棧,同時還要調用處理程序,后之還要恢復被執行的中斷的進程。
4、信號的數量非常有限【linux支持64個】
5、信號能傳輸的信息量非常有限,用戶產生的信號不能附加各種信息及參數。

上述就是小編為大家分享的PHP中怎么實現一個信號中斷系統了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

大余县| 建平县| 凌源市| 申扎县| 长子县| 上高县| 乌海市| 手机| 岳阳市| 潜江市| 河北省| 黔江区| 拜泉县| 旺苍县| 井陉县| 济阳县| 岑溪市| 共和县| 石家庄市| 巨野县| 白银市| 盐源县| 水城县| 荥经县| 当雄县| 渝北区| 武城县| 西峡县| 旌德县| 图片| 九龙县| 昌乐县| 惠安县| 汉沽区| 定结县| 望江县| 安徽省| 金阳县| 肥乡县| 全州县| 山东|