当前位置: 技术问答>linux和unix
关于poll()的唤醒问题
来源: 互联网 发布时间:2017-03-23
本文导语: 本帖最后由 allen_4167 于 2012-11-21 16:19:22 编辑 我在应用中poll()监听了一组fd的读变化,现在需要在fd集没有可读数据的情况下,在另一个线程中随时把这个阻塞状态中的poll()唤醒,请问有办法么?? 一般这种情况下的程...
一般这种情况下的程序应该如何设计?
谢谢~
|
#include
#include
#include
#include
#include
void sigusr1(int sig)
{
}
void *poller(void *arg)
{
int ret;
struct sigaction act;
struct pollfd fds[1];
act.sa_handler = sigusr1;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
#ifdef SA_INTERRUPT
act.sa_flags |= SA_INTERRUPT;
#endif
sigaction(SIGUSR1, &act, NULL);
fds[0].fd = STDIN_FILENO;
fds[0].events = POLLIN;
fds[0].revents = 0;
ret = poll(fds, 1, -1);
if (ret