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

How to check if a process is waiting due to call to wait() or waitpid()?

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

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

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

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

我做对了吗?

这是 linux 内核 2.4。

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

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

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