如何通过调用wait()或waitpid()来检查进程是否在等待?

时间:2016-11-07 11:01:30

标签: linux-kernel wait waitpid

我在sys_wait4中看到(通过调用wait()waitpid()到达),我们将当前进程插入一个保存在其struct任务中的特殊队列:

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

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

那么只有进程本身可以插入到自己的wait_chldexit队列中吗?

我做对了吗?

这是linux内核2.4。

1 个答案:

答案 0 :(得分:1)

是的,waitqueue current->wait_chldexit可能包含当前进程的单个元素或非元素。

没有人在等待等待时醒来,而是等待被子线程产生的信号打破。

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