subprocess: Get Windows return code in wait()

Currently, wait() returns 0 on windows regardless
of the actual return code of processes.

Github-Pull: arun11299/cpp-subprocess#109
Rebased-From: 04b015a8e52ead4d8bb5f0eb486419c77e418a17
This commit is contained in:
Haowen Liu 2025-04-27 16:47:04 +01:00 committed by Hennadii Stepanov
parent 9888d0f511
commit 9e8992bf8b
No known key found for this signature in database
GPG key ID: 410108112E7EA81F

View file

@ -1043,7 +1043,12 @@ inline int Popen::wait() noexcept(false)
#ifdef __USING_WINDOWS__
int ret = WaitForSingleObject(process_handle_, INFINITE);
return 0;
DWORD dretcode_;
if (FALSE == GetExitCodeProcess(process_handle_, &dretcode_))
throw OSError("Failed during call to GetExitCodeProcess", 0);
return (int)dretcode_;
#else
int ret, status;
std::tie(ret, status) = util::wait_for_child_exit(child_pid_);