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

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

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

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

Сообщение SergKam » 21.01.2010 12:33:22

Мне в программе надо переоткрыть стандартные вывод и вывод ошибок. Это нужно для ротации логов.
файл переименовывается, а потом мне дается сигнал для закрытия старого и открытия нового файла(с темже именем)
мне нужно чтото типа
rewrite(stderr);
rewrite(stdout);
но я с типами файлов запутался. как правильно это написать?
SergKam
постоялец
 
Сообщения: 251
Зарегистрирован: 16.11.2005 21:31:11
Откуда: Украина,Харьков

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

Сообщение yuriz » 05.02.2010 16:48:30

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

Код: Выделить всё
$ 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.
yuriz
незнакомец
 
Сообщения: 1
Зарегистрирован: 05.02.2010 13:25:38
Откуда: Finland


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru
cron