I changed the code to
use DBI;
use FileHandle;
use rf;
use File::Spec;
use IO::Socket;
use POSIX qw(setsid);
sub get_msg_id_and_type;
sub REAP {
1 until (-1 == waitpid(-1, WNOHANG));
$SIG{CHLD} = \&REAP;
}
$SIG{CHLD} = \&REAP;
#$devnull = File::Spec->devnull();
open STDIN, '>/dev/null' || die "Can't read /dev/null: $!";
#open STDOUT, '>/dev/null' || die "Can't write to $prout: $!";
open STDOUT, File::Spec->devnull() || die "Can't write to $prout: $
+!";
open STDERR, '>>/dev/null' || die "Can't write to $prerr: $!";
defined(my $pid = fork) || die "Can't fork: $!";
exit if $pid;
and it works.
Is it because the /dev/null behaviour is different on HP-UX and LINUX?