linux 自定義訊號

2022-03-20 09:04:36 字數 901 閱讀 2723

從來沒試過linux自定義訊號,查了下,說是系統只提供了sigusr1和sigusr2兩個,就兩個夠嗎?更要命的是如果要自定義訊號如#define sig_mysig   ....的話要改核心才行,哥瞬間就崩潰了,以前一直對linux的敬仰頓然全無,還好在這裡找到了方法

即是可以的,可按照這樣#define mysig_msg        sigusr1 + 20定義後,發現程式執行後總是馬上就直接終止執行了,用eclipse跳轉過去一看#define    sigusr1        10    /* user-defined signal 1 (posix).  */,而加20就變成了30,30是什麼?30是 #define    sigpwr        30  ,翻開《unix環境高階程式設計》一查這可是電源失效或重啟動呀哥。哪位大俠最先說是在sigusr1基礎上定義的?我就不信你實驗成功了!!!!!!!!!!!!

正確方法是在__sigrtmin(32)基礎上定義的,__sigrtmin(32)到__sigrtmax(64)是留著的實時訊號,於是我定義了#define sig_recvdata    __sigrtmin+1,

可還是不行?程式其它幾處非靜態成員函式惹來的麻煩已夠多了,我還以為是那些地方出了錯,最後才發現signal呼叫時signal(sig_recvdata,internalrecvsighandler),它總是返回sig_err,即根本從一開始註冊訊號就沒有成功 ,難道32-64真是系統預留的實時訊號,不是給開發者的??,經過一番掙扎,在csdn上幾句短短的回覆中發現說__sigrtmin基礎上的前3個最好不要用,它是linuxthread用的,真是蛋疼,你內部要用 的話把__sigrtmin定義大點嘛,總之__sigrtmin和__sigrtmax之間的一定能用就好!!

最後改成#define sig_recvdata    __sigrtmin+10,哎,終於成功了!

pyqt python自定義訊號

如下 import sys from pyqt4 import qtcore,qtgui,qtwebkit class mywebview qtwebkit.qwebview def init self,parent none qtwebkit.qwebview.init self,parent s...

Qt自定義訊號槽

qt自定義訊號槽,在控制台程式中實現 qt5 如下 qt5 include news h class news public qobject void send signals void new const qstring name private qstring m name reader.h i...

Qt 自定義訊號槽

使用 connect 可以讓我們連線系統提供的訊號和槽。但是,qt 的訊號槽機制並不僅僅是使用系統提供的那部分,還會允許我們自己設計自己的訊號和槽。這也是 qt 框架的設計思路之一,用於我們設計解耦的程式。本節將講解如何在自己的程式中自定義訊號槽。訊號槽不是 gui 模組提供的,而是 qt 核心特性...