在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()
函數等待子進程的狀態改變,然后根據返回的狀態信息判斷子進程的退出狀態。
需要注意的是,上面的代碼只是簡單的示例,實際情況中可能需要根據具體需求進行進一步的處理和錯誤檢查。