Mmhh... I'm trying with threads->exit();.. any suggests? Could be useful a similar "simple, practical and complete" example on cpan? For newbies. It would be great.
Regards, Jack my $port = 2500; my $timeout = 60; $| =1; my $server = IO::Socket::INET->new ( Proto => 'tcp', LocalPort => $port, Listen => SOMAXCONN, Timeout => $timeout, ReuseAddr => 1 ) or die "Error: can't create listening socket : $!\n"; while (my $client = $server->accept()) { my $thr = threads->create("listen_to_client", $client); my $thr1 = threads->create("stdin_to_client", $client); print "Client connected ", $thr->tid,"\n"; $thr->detach; $thr1->detach; } exit(0); sub listen_to_client { my ($client) = @_; my $tid = threads->tid(); while (my $get = <$client>) { print "client ($tid) : $get"; print $client $get; }; print "Client closed\n"; close $client; } sub stdin_to_client { my ($client) = @_; while (my $msg = <STDIN>) { print $client $msg; if ($msg =~ /exit/i){ print "exit\n"; close $client if $client; #threads->exit() if threads->can('exit'); threads->exit(); } } print "stdin thread ended\n"; } 2007/11/13, Jerry D. Hedden <[EMAIL PROTECTED]>: > jack ciabatta wrote: > > I'm writing a simple tcp multithread daemon on a Linux > > i386 system. For this moment the script is very short. I > > would like have 3 distinct threads that answer to the > > clients. Every thread answers and exits (with 'exit' > > client command) separately. At this moment when a thread > > quit, kill all threads. > > First of all, upgrade to the lastest version of 'threads' > and threads::shared from CPAN. > > Normally, a thread should 'return' and not 'exit'. However, > there is a whole section on this in the 'threads' POD called > 'EXITING A THREAD'. >