我在sys_wait4
中看到(通过调用wait()
或waitpid()
到达),我们将当前进程插入一个保存在其struct任务中的特殊队列:
DECLARE_WAITQUEUE(wait, current);
add_wait_queue(¤t->wait_chldexit,&wait);
因此,如果我想检查某个进程是否因为调用wait()
或waitpid()
而等待,我需要检查它是否在自己的(???)wait_chldexit队列中?
那么只有进程本身可以插入到自己的wait_chldexit队列中吗?
我做对了吗?
这是linux内核2.4。
答案 0 :(得分:1)
是的,waitqueue current->wait_chldexit
可能包含当前进程的单个元素或非元素。
没有人在等待等待时醒来,而是等待被子线程产生的信号打破。
通过检查某个线程的等待队列,您可以在wait()
或waitpid()
调用中检测该线程是否被阻止。