http://linux.die.net/man/2/signal
“signal()将信号符号的处置设置为处理程序,即 是SIG_IGN,SIG_DFL或程序员定义的地址 功能(“信号处理程序”)。“
我找到了它模糊的描述(网络和Linux编程新手)。这是某种回调设置功能吗?现在我的代码(我还没有编译)就像使用它一样:
signal( SIGIO, readMessage );
其中readMessage是一个函数。 SIGIO定义为:
SIGPOLL是异步I / O事件时发送给进程的信号 发生。
所以把这些放在一起,我只能猜测当发生一些异步I / O事件时,会调用函数readMessage(int)吗?这是Qt中的插槽/信号吗?
我遇到的另一个问题是,在网络编程环境中究竟被认为是一个I / O事件?这是一个返回的接受电话吗?
答案 0 :(得分:0)
在* nix上,信号是从内核到用户空间的回调。它们有点类似于中断,可以将其视为从硬件到操作系统的回调。
它们在基于事件的系统中比在Qt中的信号/时隙更相似。在Qt中,组件可以发出信号,可以由其他组件中的多个插槽接收,程序设置信号和插槽之间的连接。在其他系统(Xlib,Win32)中,程序从系统接收预定的事件。 / p>
* nix支持阻塞和非阻塞套接字。 poll()
和select()
系统调用允许程序等待I / O事件。作为poll()
/ select()
的替代方案,当发生I / O事件时,也可以使BSD和Linux发送信号(默认为SIGIO),从而实现异步I / O的形式。可以在fcntl()
的联系人页面中找到更多信息,查找F_SETFL
,F_SETOWN
,F_SETSIG
。