进程间通信--信号(SIG)
生活随笔
收集整理的這篇文章主要介紹了
进程间通信--信号(SIG)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
信號是內(nèi)容受限的一種異步通信機制
- 信號的目的:用來進程間的通信
- 信號本質(zhì)上是int型數(shù)字編號(事先定義好的);所以說是內(nèi)容受限的通信機制
- 信號是異步的(可以類比于硬件中斷)
常見信號介紹
SIGUSR2 12
信號的處理方式
- 忽略信號
- 捕獲信號(信號綁定了一個信號處理函數(shù))
- 默認處理(忽略或終止進程)
相關(guān)函數(shù)
#include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler);* 用于注冊信號處理函數(shù)的函數(shù)
* 第一個參數(shù)是所相應(yīng)的信號編號(見上)
* 第二個是函數(shù)指針,用于中斷時候的回調(diào)
* 用于給其他進程發(fā)信號的函數(shù)
* 第一個參數(shù)是發(fā)給 對應(yīng)進程的PID
* 第二個參數(shù)是對應(yīng)的信號編號(見上)
- 使得程序掛起
- 收到信號時繼續(xù)執(zhí)行
內(nèi)核掛起,讓出 cpu
#include <unistd.h>unsigned int alarm(unsigned int seconds);- 設(shè)置一個鬧鐘
- 到時間后發(fā)出SIGALRM信號
demo:
void signal_deal(int sig) {if(sig == SIGINT)printf("%s\n", "crtl+c dectected!"); }int main(int argc, char const* argv[]) {signal(SIGINT, signal_deal);signal(SIGQUIT, signal_deal);for(;;);return 0; }總結(jié)
以上是生活随笔為你收集整理的进程间通信--信号(SIG)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使得守护进程一次执行一个
- 下一篇: 网络编程--基础篇