Как переоткрыть StdOut StdErr

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
SergKam
постоялец
Сообщения: 251
Зарегистрирован: 16.11.2005 20:31:11
Откуда: Украина,Харьков

Как переоткрыть StdOut StdErr

Сообщение SergKam »

Мне в программе надо переоткрыть стандартные вывод и вывод ошибок. Это нужно для ротации логов.
файл переименовывается, а потом мне дается сигнал для закрытия старого и открытия нового файла(с темже именем)
мне нужно чтото типа
rewrite(stderr);
rewrite(stdout);
но я с типами файлов запутался. как правильно это написать?
yuriz
незнакомец
Сообщения: 1
Зарегистрирован: 05.02.2010 12:25:38
Откуда: Finland

Сообщение yuriz »

Это просто. Пример запуска программы:

Код: Выделить всё

$ std_stream_test test.pas output.txt trace.txt

Код:

Код: Выделить всё

var inf, outf, dbgf: text;

begin
    (* Открыть входной файл на чтение *)
    Assign(inf, ParamStr(1));
    Reset(inf);

    (* Если запрошено - перенаправить стандартный вывод *)
    if ParamCount >= 2 then begin
        Assign(outf, ParamStr(2));
        Rewrite(outf);
    end else
        FPdup(output, outf); // Не запрошено - просто дублируем файловый дескриптор

    (* Аналогично со стандартным потоком ошибок *)
    if ParamCount = 3 then begin
        Assign(dbgf, ParamStr(3));
        Rewrite(dbgf);
    end else
        FPdup(stderr, dbgf);

    (* Тело программы... *)   

    Close(dbgf);
    Close(outf);
    Close(inf);
end.
Ответить