Ошибся вот етот код работает:
STARTUPINFOA syst;
PROCESS_INFORMATION prc;
OFSTRUCT of;
SECURITY_ATTRIBUTES sa;
GetStartupInfo(&syst);
ZeroMemory(&sa, sizeof(sa));
sa.bInheritHandle = TRUE;
HANDLE h1 = CreateFile("D:\\testing\\out",
GENERIC_WRITE,
FILE_SHARE_WRITE,
&sa,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH,
NULL);
HANDLE h2 = CreateFile("D:\\testing\\in",
GENERIC_READ,
FILE_SHARE_READ,
&sa,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
ZeroMemory(&syst,sizeof(STARTUPINFO));
syst.cb = sizeof(STARTUPINFO);
syst.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
syst.hStdInput = h2;
syst.hStdOutput = h1;
CreateProcess("D:\\testing\\n.exe",
0, 0, 0, TRUE,
REALTIME_PRIORITY_CLASS,
0, 0,
&syst,
&prc);
WaitForSingleObject( prc.hProcess, INFINITE );
CloseHandle(h2);
CloseHandle(h1);