在C++中,wifexited
函数是一个宏,用于检查子进程是否正常退出。该宏接受一个表示子进程状态的整数参数,并返回一个非零值(真)表示子进程正常退出,返回0(假)表示子进程不是正常退出。
下面是一个使用wifexited
函数的示例代码:
#include#include #include #include int main() { pid_t childPid = fork(); if (childPid == 0) { // 子进程 std::cout << "This is child process." << std::endl; sleep(2); // 模拟子进程工作 exit(0); // 子进程正常退出 } else if (childPid > 0) { // 父进程 int status; waitpid(childPid, &status, 0); // 等待子进程退出 if (WIFEXITED(status)) { std::cout << "Child process exited normally." << std::endl; } else { std::cout << "Child process did not exit normally." << std::endl; } } else { std::cerr << "Fork failed." << std::endl; return 1; } return 0; }
上述代码中,首先使用fork
函数创建了一个子进程。子进程输出一条信息后,使用exit(0)
正常退出。父进程使用waitpid
函数等待子进程退出,并使用WIFEXITED
宏判断子进程是否正常退出。最后,根据WIFEXITED
的返回值输出相应的消息。
当运行上述代码时,子进程会等待2秒钟后退出,父进程会输出Child process exited normally.
的消息。