Мне в программе надо переоткрыть стандартные вывод и вывод ошибок. Это нужно для ротации логов.
файл переименовывается, а потом мне дается сигнал для закрытия старого и открытия нового файла(с темже именем)
мне нужно чтото типа
rewrite(stderr);
rewrite(stdout);
но я с типами файлов запутался. как правильно это написать?
Как переоткрыть StdOut StdErr
Модератор: Модераторы
Это просто. Пример запуска программы:
Код:
Код: Выделить всё
$ 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.
