Привет всем.
Хочу перенаправлять весь STDERR на почту. Знаю что есть ф-я dup2().
Пробую:
#!/usr/local/bin/perluse strict;
use POSIX qw(dup2);dup2(<STDOUT>,"| mail -s test_redir root");
print "redirect";
На STDOUT выводит, а письма нет...
1) зачем для этого dup2, если можно просто переоткрыть/присвоить STDERR
2) вы говорите про STDERR, а в коде работаете с STDOUT, так что на самом деле вам нужно?
>1) зачем для этого dup2, если можно просто переоткрыть/присвоить STDERR
>2) вы говорите про STDERR, а в коде работаете с STDOUT, так
>что на самом деле вам нужно?нужен STDERR. это была опечатка.
мне на самом деле хотелось бы чтобы STDERR выводился как стандартным образом, так и отправлялся на мыло. поэтому выбор пал на dup2
Для начала необходимо закрыть stderr, после чего открыть файл, куда будет падать вывод stderr. Этот файл получит файловый дескриптор 2, так как система выдает минимальный свободный дескриптор, доступный на момент открытия файла
>dup2(<STDOUT>,"| mail -s test_redir root");Кошмар, слов нет! Слабо открыть perldoc POSIX и почитать какие аргументы принимает dup2? Нет, не <STDOUT> (это вообще-то строка, прочитанная из STDOUT, что само по себе бред) и даже не STDOUT. И нет, не строку.
Когда разберетесь с этим, откройте perldoc -f open и узрите все что вам нужно с примерами.
>>dup2(<STDOUT>,"| mail -s test_redir root");
>
>Кошмар, слов нет! Слабо открыть perldoc POSIX и почитать какие аргументы принимает dup2? Нет, не <STDOUT> (это вообще-то строка, прочитанная из STDOUT, что само по себе бред) и даже не STDOUT. И нет, не строку.
>
>Когда разберетесь с этим, откройте perldoc -f open и узрите все что
>вам нужно с примерами.каюсь, не осилил я книжку Ларри Уолла. Но если б я знал - не спрашивал. Для того и есть форум, я думаю.
я читал man dup2. пробовал много всего.. потом решил спросить.
в общем, как я написал angra, мне нужно чтобы STDERR валился параллельно и туда и сюда.