The OpenNET Project / Index page

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

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


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: perl, socket,  (найти похожие документы)
Date: Tue, 03 Apr 2001 10:27:09 +0400 From: Stas Vlasov <[email protected]> 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%[email protected]

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

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру