Re[2]: Перенаправление ввода-вывода консоли
От: SergH Россия  
Дата: 09.05.02 14:19
Оценка:
Здравствуйте 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 выводит на консоль.
Делай что должно, и будь что будет
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.