阅读量:0
在C++中监控进程状态可以使用操作系统提供的API函数来实现。以下是一种常用的方法:
- 使用
<sys/types.h>
和<sys/wait.h>
头文件中的waitpid()
函数来等待子进程状态的改变。
#include <sys/types.h> #include <sys/wait.h> #include <iostream> int main() { pid_t pid = fork(); if (pid == 0) { // 子进程逻辑 sleep(5); std::cout << "Child process finished." << std::endl; } else if (pid > 0) { // 父进程逻辑 int status; pid_t child_pid = waitpid(pid, &status, 0); if (WIFEXITED(status)) { std::cout << "Child process exited with status " << WEXITSTATUS(status) << std::endl; } else if (WIFSIGNALED(status)) { std::cout << "Child process terminated by signal " << WTERMSIG(status) << std::endl; } else { std::cout << "Child process status unknown." << std::endl; } } else { std::cerr << "Fork failed." << std::endl; return 1; } return 0; }
在上面的示例中,父进程调用 waitpid()
函数等待子进程的状态改变,然后根据返回的状态信息判断子进程的退出状态。
需要注意的是,上面的代码只是简单的示例,实际情况中可能需要根据具体需求进行进一步的处理和错误检查。