The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

использование в perl функции dup2 (perl socket)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: perl, socket,  (найти похожие документы)
Date: Tue, 03 Apr 2001 10:27:09 +0400 From: Stas Vlasov <Stas.Vlasov@p13.f172.n5080.z2.fidonet.org> Newsgroups: fido7.ru.unix Subject: использование в perl функции dup2 LS>>> if (STDIN_FILENO != dup2(STDIN_FILENO,clsock)) my_error_handler(); LS>>> if (STDOUT_FILENO != dup2(STDOUT_FILENO,clsock)) my_error_handler(); LS>>> if (clsock != STDIN_FILENO && clsock != STDOUT_FILENO) SV>> Хм. Одно из двух, либо перл слабо подходит для этого, либо я не умею читать. SV>> Hо dup2 в перле отсутствует. EBB> Присутствует неявно. Читать надо "perldoc -f open" и "man perlipc". EBB> Там конструкции даже удобнее, чем возня с дупами. :) Поздно :-) Уже начал с дупами. Вот что у меня вышло: #!/usr/bin/perl use IO::Socket; use POSIX; $server_port = 58100; $server = IO::Socket::INET->new(LocalPort => $server_port, Type => SOCK_STREAM, Reuse => 1, Listen => 10 ) or die "Couldn't be a tcp server on port $server_port :$@\n"; while ($client = $server->accept()) { if ($client < 0) { printf "Socket error!\n"; next; } $addr = $client->peerhost(); if (($addr =~ /^192\.168\.47\./) || ($addr =~ /127.0.0.1/)) { $pid = fork(); if ($pid < 0) { printf "Can't fork!\n" }; if ($pid == 0) { close STDIN; close STDOUT; close STDERR; dup2(STDIN, $client); dup2(STDOUT, $client); if (!(STDIN == $client) && !(STDOUT == $client)) { close $client; } exec ("./ftp-gw"); exit(); } else { close $client; } } else { close $client; } } close($server); При этом, ftp-gw (настроенный, отдельно работает) сообщает мне getpeername: Socket operation on non-socket -- Стас. stas%d1794n1@ekasb.sbank.e-burg.su

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Ваш комментарий
Имя:         
E-Mail:      
Заголовок:
Текст:





  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor