This is still not working?
Code:
STARTUPINFO si;
PROCESS_INFORMATION pi;
HANDLE hin = CreateFile("data1.in", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (!SetHandleInformation(hin, HANDLE_FLAG_INHERIT, 0)){
printf("set in handle error %d", GetLastError());
scanf("%d", &n);
return 0;
}
if(hin == INVALID_HANDLE_VALUE){
printf("in error %d\n", GetLastError());
}
HANDLE hout = CreateFile("data1.out", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (!SetHandleInformation(hout, HANDLE_FLAG_INHERIT, 0)){
printf("set out handle error %d", GetLastError());
scanf("%d", &n);
return 0;
}
if(hout == INVALID_HANDLE_VALUE){
printf("out error %d\n", GetLastError());
}
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdInput = hin;
si.hStdOutput = hout;
ZeroMemory(&pi, sizeof(pi));
if(!CreateProcess(NULL, // No module name (use command line)
"POI", // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
TRUE, // Set handle inheritance to TRUE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
){
printf( "CreateProcess failed (%d).\n", GetLastError() );
scanf("%d", &n);
return 0;
}
I get error no.5 when setting the hin handle.