如何在不杀死它的情况下调用同一进程中另一个线程在 poll 函数上休眠的进程?

How to invoke a process sleeping on poll function by another thread in the same process with signal without killing it?

我想手动唤醒(由同一进程中的另一个线程)休眠在 poll() 函数上等待任何可用输入数据的线程。看起来我通过发送信号找到了一个可能的解决方案,但我真的没有任何经验。在这个页面上,我 found 一个名为 SIGPOLL 的信号,其代码如 POLL_IN、POLL_MSG,但是当我调用它时,整个进程都被终止了。 如何在不终止整个进程的情况下发送此信号?

我用 pipe() 解决了这个问题。

void a(int invokefd){
     ...
     write(invokefd, "c", 1);
     ...
}

void b(int invokefd){
     vector<pollfd> readfds;
     ...
     pollfd invfd;
     invfd.fd = invokefd;
     invfd.events = POLLIN;
     invfd.revents = 0;
     readfds.push_back(invfd);
     ...
     poll(&readfds[0], readfds.size(), -1);
     ...
}

void main(){
     ...
     int invokedfs[2];
     pipe(invokefds);
     thread aTh(a, invokefds[1]);
     thread bTh(b, invokefds[0]);
     ...
}