c语言qnx通信函数,QNX中进程间通信(IPC)之Signal篇

主要内容翻译自QNX开发文档,根据自己理解翻译,错误之处在所难免,目的还是提供给大家对照阅读,我自己也写了一些代码,抽空后继也会放上

如果应用程序需要处理信号 (signal) ,你需要设置信号处理函数 (signal handler) 。你不能在信号处理函数中调用 Photon 函数的原因是由于 widget library 是非可重入和信号安全的。

为了绕开这个问题, Photon library 包含了一个信号处理函数,你注册一个信号处理函数后, Photon 会稍后调用:

l

Photon 的 signal handler 返回

l

所有当前 widget 的处理都已完成

注意 :当你使用这种信号处理方式,你将得不到严格的实时性,这是因为信号处理函数不是立即调用的。

1.1

Adding a signal-processing function

调用 PtAppAddSignalProc() 函数来添加信号处理函数,典型应用与:

l

应用程序初始化函数

l

某窗口的设置函数

需要包含 文件。

PtAppAddSignalProc() 函数语法如下:

int PtAppAddSignalProc( PtAppContext_t app,

sigset_t const *set,

PtSignalProc_t func,

void *data);

参数列表:

app

应用程序上下文。

set

可能导致信号处理函数被调用的信号集合的指针。使用 sigemptyset() 和 sigaddset() 函数建立该集合。更多信息参见 QNX Neutrino Library Reference 。

func

信号处理函数。参见 Photon Library Reference 中的 PtSignalProc_t 。

data

函数所传递数据。

PtAppAddSignalProc() 返回 0 表示成功, -1 表示失败。

信号处理函数原型如下:

int signalProcFunctions (int signum

void *data);

参数列表如下:

signum

处理的信号数量。

data

PtAppAddSignalProc() 函数中指定的 data 参数。

如果你希望保留该信号,返回 Pt_CONTINUE ,删除信号返回 Pt_END( 如果函数还被其他信号注册,在其他信号产生时将再次被调用 ) 。

1.2

Removing a signal-processing function

删除信号处理函数:

调用 PtAppRemoveSignal() 删除单个或所有信号处理函数、数据对。

在信号处理函数中返回

Pt_END

,如果函数被多次注册,将会保持安装状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值