Здравствуйте Dutchman, Вы писали:
D>Гляди:
[skip]
Вот такой процесс-родитель:
#include <windows.h>
void main()
{
HANDLE hFile;
hFile = CreateFile(
"stdout.txt",
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
0,
NULL);
SetFilePointer(hFile, 0, NULL, FILE_END);
STARTUPINFO si = {sizeof(STARTUPINFO)};
si.hStdOutput = hFile;
PROCESS_INFORMATION pi;
CreateProcess(NULL, "printer.exe", NULL, NULL, FALSE, CREATE_NO_WINDOW, 0, 0, &si, &pi);
// MessageBox(NULL, "Press OK", "", MB_OK);
CloseHandle(hFile);
}
Запускает такого потомка:
#include <stdio.h>
void main()
{
printf("Hello, World");
}
И не работает! В смысле файл stdout.txt пуст. На экран, правда, тоже ничего не выводится. Если сделать hFile наследуемым, лучше не становится. Если убрать CREATE_NO_WINDOW тоже. Неужели этот механизм не предназначен для файлов, а только для каналов?
SetStdHandle тоже не работает с файлами. Такое ощушение, что вызов игнорируется так как printf выводит на консоль.