536 |
/* Close the halves of the pipes we don't need */ |
/* Close the halves of the pipes we don't need */ |
537 |
if (pproc->sv_stdin) { |
if (pproc->sv_stdin) { |
538 |
CloseHandle((HANDLE)pproc->sv_stdin[1]); |
CloseHandle((HANDLE)pproc->sv_stdin[1]); |
539 |
(HANDLE)pproc->sv_stdin[1] = 0; |
pproc->sv_stdin[1] = 0; |
540 |
} |
} |
541 |
if (pproc->sv_stdout) { |
if (pproc->sv_stdout) { |
542 |
CloseHandle((HANDLE)pproc->sv_stdout[1]); |
CloseHandle((HANDLE)pproc->sv_stdout[1]); |
543 |
(HANDLE)pproc->sv_stdout[1] = 0; |
pproc->sv_stdout[1] = 0; |
544 |
} |
} |
545 |
if (pproc->sv_stderr) { |
if (pproc->sv_stderr) { |
546 |
CloseHandle((HANDLE)pproc->sv_stderr[1]); |
CloseHandle((HANDLE)pproc->sv_stderr[1]); |
547 |
(HANDLE)pproc->sv_stderr[1] = 0; |
pproc->sv_stderr[1] = 0; |
548 |
} |
} |
549 |
|
|
550 |
free( command_line ); |
free( command_line ); |
657 |
sub_process *pproc = (sub_process *)proc; |
sub_process *pproc = (sub_process *)proc; |
658 |
bool_t stdin_eof = FALSE, stdout_eof = FALSE, stderr_eof = FALSE; |
bool_t stdin_eof = FALSE, stdout_eof = FALSE, stderr_eof = FALSE; |
659 |
HANDLE childhand = (HANDLE) pproc->pid; |
HANDLE childhand = (HANDLE) pproc->pid; |
660 |
HANDLE tStdin, tStdout, tStderr; |
HANDLE tStdin = NULL, tStdout = NULL, tStderr = NULL; |
661 |
DWORD dwStdin, dwStdout, dwStderr; |
DWORD dwStdin, dwStdout, dwStderr; |
662 |
HANDLE wait_list[4]; |
HANDLE wait_list[4]; |
663 |
DWORD wait_count; |
DWORD wait_count; |
674 |
if (!pproc->inp) { |
if (!pproc->inp) { |
675 |
stdin_eof = TRUE; |
stdin_eof = TRUE; |
676 |
CloseHandle((HANDLE)pproc->sv_stdin[0]); |
CloseHandle((HANDLE)pproc->sv_stdin[0]); |
677 |
(HANDLE)pproc->sv_stdin[0] = 0; |
pproc->sv_stdin[0] = 0; |
678 |
} else { |
} else { |
679 |
tStdin = (HANDLE) _beginthreadex( 0, 1024, |
tStdin = (HANDLE) _beginthreadex( 0, 1024, |
680 |
(unsigned (__stdcall *) (void *))proc_stdin_thread, pproc, 0, |
(unsigned (__stdcall *) (void *))proc_stdin_thread, pproc, 0, |
739 |
|
|
740 |
if (ready_hand == tStdin) { |
if (ready_hand == tStdin) { |
741 |
CloseHandle((HANDLE)pproc->sv_stdin[0]); |
CloseHandle((HANDLE)pproc->sv_stdin[0]); |
742 |
(HANDLE)pproc->sv_stdin[0] = 0; |
pproc->sv_stdin[0] = 0; |
743 |
CloseHandle(tStdin); |
CloseHandle(tStdin); |
744 |
tStdin = 0; |
tStdin = 0; |
745 |
stdin_eof = TRUE; |
stdin_eof = TRUE; |
747 |
} else if (ready_hand == tStdout) { |
} else if (ready_hand == tStdout) { |
748 |
|
|
749 |
CloseHandle((HANDLE)pproc->sv_stdout[0]); |
CloseHandle((HANDLE)pproc->sv_stdout[0]); |
750 |
(HANDLE)pproc->sv_stdout[0] = 0; |
pproc->sv_stdout[0] = 0; |
751 |
CloseHandle(tStdout); |
CloseHandle(tStdout); |
752 |
tStdout = 0; |
tStdout = 0; |
753 |
stdout_eof = TRUE; |
stdout_eof = TRUE; |
755 |
} else if (ready_hand == tStderr) { |
} else if (ready_hand == tStderr) { |
756 |
|
|
757 |
CloseHandle((HANDLE)pproc->sv_stderr[0]); |
CloseHandle((HANDLE)pproc->sv_stderr[0]); |
758 |
(HANDLE)pproc->sv_stderr[0] = 0; |
pproc->sv_stderr[0] = 0; |
759 |
CloseHandle(tStderr); |
CloseHandle(tStderr); |
760 |
tStderr = 0; |
tStderr = 0; |
761 |
stderr_eof = TRUE; |
stderr_eof = TRUE; |