C++のwifexitedの意味は何ですか?
C++において、wifexitedは、子プロセスが正常に終了したかどうかをチェックするマクロです。通常、waitpidシステムコールと一緒に使用されます。
wifexited関数は、子プロセスの終了状態を判断します。つまり、子プロセスが正常な方法で終了したかどうかを検知し、シグナルによる中断や他の異常な状況によって終了していないかを確認します。子プロセスが正常な方法で終了した場合、wifexitedはゼロ以外の値を返します。
例文:
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <iostream>
int main() {
pid_t pid = fork();
if (pid == 0) {
// 子进程
exit(123);
} else {
// 父进程
int status;
waitpid(pid, &status, 0);
if (WIFEXITED(status)) {
std::cout << "子进程以正常方式退出,退出状态码为: " << WEXITSTATUS(status) << std::endl;
} else {
std::cout << "子进程未以正常方式退出" << std::endl;
}
}
return 0;
}
上記の例では、wifexitedマクロを使用して子プロセスが正常に終了したかどうかを判断し、wexitstatusマクロを使用して子プロセスの終了ステータスコードを取得できます。
waitpidで返された状態のみをチェックするため、wifexitedマクロを使用してください。wait関数を使用すると、wifexitedを使用できません。