C++鐨剋ifexited鍑芥暟鎬庝箞浣跨敤
鍦–++涓紝wifexited
鍑芥暟鏄竴涓畯锛岀敤浜庢鏌ュ瓙杩涚▼鏄惁姝e父閫€鍑恒€傝瀹忔帴鍙椾竴涓〃绀哄瓙杩涚▼鐘舵€佺殑鏁存暟鍙傛暟锛屽苟杩斿洖涓€涓潪闆跺€硷紙鐪燂級琛ㄧず瀛愯繘绋嬫甯搁€€鍑猴紝杩斿洖0锛堝亣锛夎〃绀哄瓙杩涚▼涓嶆槸姝e父閫€鍑恒€?/p>
涓嬮潰鏄竴涓娇鐢?code>wifexited鍑芥暟鐨勭ず渚嬩唬鐮侊細
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <iostream>
int main() {
pid_t childPid = fork();
if (childPid == 0) {
// 瀛愯繘绋?/span>
std::cout << "This is child process." << std::endl;
sleep(2); // 妯℃嫙瀛愯繘绋嬪伐浣?/span>
exit(0); // 瀛愯繘绋嬫甯搁€€鍑?/span>
} else if (childPid > 0) {
// 鐖惰繘绋?/span>
int status;
waitpid(childPid, &status, 0); // 绛夊緟瀛愯繘绋嬮€€鍑?/span>
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;
}
涓婅堪浠g爜涓紝棣栧厛浣跨敤fork
鍑芥暟鍒涘缓浜嗕竴涓瓙杩涚▼銆傚瓙杩涚▼杈撳嚭涓€鏉′俊鎭悗锛屼娇鐢?code>exit(0)姝e父閫€鍑恒€傜埗杩涚▼浣跨敤waitpid
鍑芥暟绛夊緟瀛愯繘绋嬮€€鍑猴紝骞朵娇鐢?code>WIFEXITED瀹忓垽鏂瓙杩涚▼鏄惁姝e父閫€鍑恒€傛渶鍚庯紝鏍规嵁WIFEXITED
鐨勮繑鍥炲€艰緭鍑虹浉搴旂殑娑堟伅銆?/p>
褰撹繍琛屼笂杩颁唬鐮佹椂锛屽瓙杩涚▼浼氱瓑寰?绉掗挓鍚庨€€鍑猴紝鐖惰繘绋嬩細杈撳嚭Child process exited normally.
鐨勬秷鎭€?/p>