4 * Serves as an intermediate stub Win32 console application to
5 * avoid a hanging pipe when redirecting 16-bit console based
6 * programs (including MS-DOS console based programs and batch
7 * files) on Window 95 and Windows 98.
9 * This program is to be launched with redirected standard
10 * handles. It will launch the command line specified 16-bit
11 * console based application in the same console, forwarding
12 * it's own redirected standard handles to the 16-bit child.
14 * AKA solution to the problem described in KB: Q150956.
17 #define WINDOWS_LEAN_AND_MEAN
21 "This program is used by Python's os.pipe function to\n"
22 "to work around a limitation in Windows 95/98. It is\n"
23 "not designed to be used as stand-alone program.";
25 int main(int argc
, char *argv
[])
29 PROCESS_INFORMATION pi
;
33 MessageBox(NULL
, usage
, argv
[0], MB_OK
);
37 /* Make child process use this app's standard files. */
38 ZeroMemory(&si
, sizeof si
);
40 si
.dwFlags
= STARTF_USESTDHANDLES
;
41 si
.hStdInput
= GetStdHandle(STD_INPUT_HANDLE
);
42 si
.hStdOutput
= GetStdHandle(STD_OUTPUT_HANDLE
);
43 si
.hStdError
= GetStdHandle(STD_ERROR_HANDLE
);
54 if (WaitForSingleObject(pi
.hProcess
, INFINITE
) != WAIT_FAILED
) {
55 GetExitCodeProcess(pi
.hProcess
, &exit_code
);
57 CloseHandle(pi
.hProcess
);
58 CloseHandle(pi
.hThread
);