| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > Как перехватить системную ошибку |
| Автор: korob2001 19.3.2004, 04:23 |
| Всем, привет! Ради тренировки, написал программу в которой дескрипторы STDIN, STDOUT и STDERR связываю с файлами, как показано ниже: STDIN - 'infile.txt' STDOUT - 'outfile.txt' STDERR - 'errfile.txt' В файле infile.txt прописаны команды Командной строки. После выполнения программы, в файл outfile.txt записываются результаты команд прописаных в файле infile.txt, а в файл errfile.txt ошибки, которые возникли при выполнении системных комад и самой программы. Так как, в файл outfile.txt символы кирилицы записывались досовской кодировке, я решил написать небольшой класс, цель методов которого, перекодировать символы полученной строки из одной кодировки в другую и вернуть уже перекодированную строку. Но для того что бы он мог перекодировать, одному из его методов необходимо передать строку а результат сохранить в переменную. С файлом outfile.txt проблем не возникло, зато в файл errfile.txt все записи, где есть символы кирилицы, прописываются в дос-кодировке. Как перехватить системную ошибку и сохранить её в переменной, для дальнейшей обработки и затем вывести эту, уже обработанную, ошибку в STDERR? Заранее спасибо, Денис |
| Автор: Arush 29.3.2004, 20:06 |
| Ты наверно имеешь в виду не "перехватить системную ошибку" а "перхватить текст сообщения об ошибке" ? IMHO проще всего открыть какой-нибудь пайп, дескриптор для записи назначить как stderr, из дескриптора для чтения читать, перекодировать в нужную кодировку и записывать на диск(причем для пайпа это наверно можно будет сделать один раз - в конце программы). Удачи Александр |
| Автор: korob2001 30.3.2004, 18:43 | ||
| To Arush Насколько я понимаю в конце программы нужно сделать что-то подобное:
|
| Автор: Гость_mcx 26.6.2004, 19:03 | ||
можно использовать модуль CGI
|
| Автор: korob2001 27.6.2004, 02:50 |
| Большое спасибо. |