如何检查进程是否由于调用wait()或waitpid()而处于等待状态



我看到在sys_wait4(通过调用wait()waitpid()到达)中,我们将当前进程插入到一个特殊队列中,该队列保存在其结构体task中:

DECLARE_WAITQUEUE(wait, current);    
add_wait_queue(&current->wait_chldexit,&wait);

所以如果我想检查某个进程是否由于调用wait()waitpid()而等待,我需要检查它是否在自己的(???)wait_chldexit队列?

所以只有进程本身可以插入到它自己的wait_chldexit队列中?

我写对了吗?

是的,waitqueue current->wait_chldexit可以包含当前进程的单个元素,也可以包含所有的非元素。

没有人唤醒waitqueue,等待被子线程发出的信号打断。

通过检查某个线程的waitqueue,您可以检测该线程是否在wait()waitpid()调用中被阻塞。

最新更新