#!/usr/bin/perl #listener.pl use Socket; use POSIX; # Forking and letting parent die... $pid = fork; exit if $pid; die "Couldn't fork: $!" unless defined($pid); # Disassociate from controlling term... POSIX::setsid() || die "Can't start a new session: $!"; # Trap fatal signals and set a graceful exit flag... $time_to_die = 0; sub signal_handler { $time_to_die = 1; } $SIG{INT} = $SIG{TERM} = $SIG{HUP} = \&signal_handler; until ($time_to_die) { $local_port = 1234; # Setting up server for listening... my $proto = getprotobyname('tcp'); socket(SERVER, PF_INET, SOCK_STREAM, $proto) || die "Can't create socket: $!\n"; setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1) || die "Can't setsockopt $!\n"; bind(SERVER, sockaddr_in($local_port, INADDR_ANY)) || die "Can't bind to socket: $!\n"; listen(SERVER,SOMAXCONN) || die "Can't listen to socket: $1"; while ($paddr = accept(CLIENT, SERVER)){ $command = (); '$command'; } close(SERVER); }