MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / try_get_exit_status

Method try_get_exit_status

lib/tiny-process/process_win.cpp:290–321  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

288}
289
290bool Process::try_get_exit_status(int &exit_status) noexcept {
291 if(data.id == 0) {
292 exit_status = -1;
293 return true;
294 }
295
296 if(!data.handle) {
297 exit_status = data.exit_status;
298 return true;
299 }
300
301 DWORD wait_status = WaitForSingleObject(data.handle, 0);
302 if(wait_status == WAIT_TIMEOUT)
303 return false;
304
305 DWORD exit_status_tmp;
306 if(!GetExitCodeProcess(data.handle, &exit_status_tmp))
307 exit_status = -1;
308 else
309 exit_status = static_cast<int>(exit_status_tmp);
310 data.exit_status = exit_status; // Store exit status for future calls
311
312 {
313 std::lock_guard<std::mutex> lock(close_mutex);
314 CloseHandle(data.handle);
315 data.handle = nullptr;
316 closed = true;
317 }
318 close_fds();
319
320 return true;
321}
322
323void Process::close_fds() noexcept {
324 if(stdout_thread.joinable())

Callers 3

mainFunction · 0.45
mainFunction · 0.45
startAppMethod · 0.45

Calls

no outgoing calls

Tested by 1

mainFunction · 0.36