ExecAndWait
This commit is contained in:
@@ -396,6 +396,7 @@ Process CreateCommandLineProcess(String command_line, String working_dir) {
|
||||
bool PollExitCode(Process *process) {
|
||||
Assert(process->is_valid);
|
||||
Win32Process *p = (Win32Process *)process->platform;
|
||||
if (process->exited) return process->exited;
|
||||
|
||||
if (WaitForSingleObject(p->handle, 0) != WAIT_OBJECT_0) {
|
||||
return false;
|
||||
@@ -407,11 +408,15 @@ bool PollExitCode(Process *process) {
|
||||
exit_code = -1;
|
||||
}
|
||||
|
||||
process->exited = true;
|
||||
process->exit_code = (int)exit_code;
|
||||
Win32CloseProcess(process);
|
||||
return true;
|
||||
}
|
||||
|
||||
void CloseProcess(Process *process) {
|
||||
Win32CloseProcess(process);
|
||||
}
|
||||
|
||||
void KillProcess(Process *process) {
|
||||
Assert(process->is_valid);
|
||||
Win32Process *p = (Win32Process *)process->platform;
|
||||
@@ -437,6 +442,10 @@ StdoutPollInfo PollStdout(Process *process, char *buffer, int64_t buffer_size) {
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!buffer) {
|
||||
return {0, bytes_avail};
|
||||
}
|
||||
|
||||
if (bytes_avail == 0) {
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user