等待() 等待进程是否消耗系统 CPU
Does a wait() waiting process consume system CPU
问题 1
我想开发一个轻恶魔A
来监督另一个恶魔B
。 我的轻守护进程A
将全程运行wait()
,并在每次wait()
返回时检查守护进程B
是否仍在运行
下面是我的 light supervisor 守护程序的源代码A
:
void main(void)
{
int pid, status;
while(1)
{
pid = wait(&status);
if (!daemon_is_still_running("daemonB")) {
//Do something
}
}
}
int daemon_is_still_running(char *name)
{
//this function check all the pid under the folder /proc and
//return 0 in case the daemon is not running
//return 1 in case the daemon is still running
}
我的守护程序A
的上述代码会导致 CPU 负载吗?wait()
函数会导致 CPU 负载吗?
问题2
有没有办法检测守护程序B
是否被信号处理程序停止?
wait()
函数会导致 CPU 负载吗?
否,wait()
函数在等待时不会消耗任何 CPU。
但要么你的例子过于简单化,要么掩盖了对wait()
行为的误解。wait()
函数用于等待子进程终止或停止,但程序不会生成任何子进程。 (请注意,"终止"和"停止"是不同的东西。 此外,如果您的程序生成了它正在监视的"守护程序 B"进程,那么它可以从返回的 pid 和状态中判断该守护进程是否仍在运行。
有没有办法检测守护程序 B 是否被信号处理程序停止?
当进程停止或终止时,SIGCHLD
将传递到其父进程。 这会与wait()
交互,但您也可以注册自己的处理程序。 但是,没有内置机制可以让进程注册在其自己的子进程以外的进程停止或终止时发出信号。
相关文章:
- C++,系统无法执行指定的程序
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 如何让LLDB在成功时退出,在失败时等待
- 在C++游戏中与库存系统作斗争
- 文件系统:复制功能的速度秘诀是什么
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 在gtest.中使用fff.h模拟系统API
- 对于同一任务,线程的等待时间在 0 到 30000 微秒之间系统地切换
- 等待() 等待进程是否消耗系统 CPU
- MySQL Windows c api 命名管道错误:"在'等待初始通信数据包'时丢失与 MySQL 服务器的连接,系统错误:0
- 使用轮询系统调用等待 fds 时 CPU 使用率高
- 如何使linux系统等待OpenCV程序
- 等待24小时的线程的潜在系统成本
- 有没有办法不等待系统()命令完成?(c)
- 等待系统调用完成
- c++等待系统调用