URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8350
[ Назад ]

Исходное сообщение
"dup2 перенаправление "

Отправлено dsfaf , 14-Июл-09 17:41 
Привет всем.
Хочу перенаправлять весь STDERR на почту. Знаю что есть ф-я dup2().
Пробую:
#!/usr/local/bin/perl

use strict;
use POSIX qw(dup2);

dup2(<STDOUT>,"| mail -s test_redir root");

print "redirect";

На STDOUT выводит, а письма нет...


Содержание

Сообщения в этом обсуждении
"dup2 перенаправление "
Отправлено angra , 14-Июл-09 18:55 
1) зачем для этого dup2, если можно просто переоткрыть/присвоить STDERR
2) вы говорите про STDERR, а в коде работаете с STDOUT, так что на самом деле вам нужно?

"dup2 перенаправление "
Отправлено dsfaf , 22-Июл-09 11:02 
>1) зачем для этого dup2, если можно просто переоткрыть/присвоить STDERR
>2) вы говорите про STDERR, а в коде работаете с STDOUT, так
>что на самом деле вам нужно?

нужен STDERR. это была опечатка.
мне на самом деле хотелось бы чтобы STDERR выводился как стандартным образом, так и отправлялся на мыло. поэтому выбор пал на dup2


"dup2 перенаправление "
Отправлено coDEbugger , 15-Июл-09 14:28 
Для начала необходимо закрыть stderr, после чего открыть файл, куда будет падать вывод stderr. Этот файл получит файловый дескриптор 2, так как система выдает минимальный свободный дескриптор, доступный на момент открытия файла

"dup2 перенаправление "
Отправлено аноним , 15-Июл-09 18:49 
>dup2(<STDOUT>,"| mail -s test_redir root");

Кошмар, слов нет! Слабо открыть perldoc POSIX и почитать какие аргументы принимает dup2? Нет, не <STDOUT> (это вообще-то строка, прочитанная из STDOUT, что само по себе бред) и даже не STDOUT. И нет, не строку.

Когда разберетесь с этим, откройте perldoc -f open и узрите все что вам нужно с примерами.


"dup2 перенаправление "
Отправлено dsfaf , 22-Июл-09 11:10 
>>dup2(<STDOUT>,"| mail -s test_redir root");
>
>Кошмар, слов нет! Слабо открыть perldoc POSIX и почитать какие аргументы принимает dup2? Нет, не <STDOUT> (это вообще-то строка, прочитанная из STDOUT, что само по себе бред) и даже не STDOUT. И нет, не строку.
>
>Когда разберетесь с этим, откройте perldoc -f open и узрите все что
>вам нужно с примерами.

каюсь, не осилил я книжку Ларри Уолла. Но если б я знал - не спрашивал. Для того и есть форум, я думаю.

я читал man dup2. пробовал много всего.. потом решил спросить.
в общем, как я написал angra, мне нужно чтобы STDERR валился параллельно и туда и сюда.