进程间通信--信号(SIG)
生活随笔
收集整理的這篇文章主要介紹了
进程间通信--信号(SIG)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
信號是內容受限的一種異步通信機制
- 信號的目的:用來進程間的通信
- 信號本質上是int型數字編號(事先定義好的);所以說是內容受限的通信機制
- 信號是異步的(可以類比于硬件中斷)
常見信號介紹
SIGUSR2 12
信號的處理方式
- 忽略信號
- 捕獲信號(信號綁定了一個信號處理函數)
- 默認處理(忽略或終止進程)
相關函數
#include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler);* 用于注冊信號處理函數的函數
* 第一個參數是所相應的信號編號(見上)
* 第二個是函數指針,用于中斷時候的回調
* 用于給其他進程發信號的函數
* 第一個參數是發給 對應進程的PID
* 第二個參數是對應的信號編號(見上)
- 使得程序掛起
- 收到信號時繼續執行
內核掛起,讓出 cpu
#include <unistd.h>unsigned int alarm(unsigned int seconds);- 設置一個鬧鐘
- 到時間后發出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; }總結
以上是生活随笔為你收集整理的进程间通信--信号(SIG)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使得守护进程一次执行一个
- 下一篇: 网络编程--基础篇