From 1ede42da96838b463ec6cb9588ef1b4a57585a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Kwa=C5=9Bny?= Date: Fri, 15 Apr 2011 02:37:15 +0800 Subject: [PATCH] add "-d" option for daemon mode --- shairport.pl | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/shairport.pl b/shairport.pl index a797140c..92c9f291 100755 --- a/shairport.pl +++ b/shairport.pl @@ -47,11 +47,13 @@ my $apname = "ShairPort $$ on " . `hostname`; # password - required to connect # for no password, set: my $password = ''; +my $daemon; # suppose hairtunes is under same directory my $hairtunes_cli = $FindBin::Bin . '/hairtunes'; GetOptions("apname=s" => \$apname, - "password=s" => \$password); + "password=s" => \$password, + "d" => \$daemon); # use --apname MyName --password secret as arguments @@ -152,6 +154,24 @@ my $sel = new IO::Select($listen); print "listening...\n"; + +if ($daemon) { + use POSIX; + POSIX::setsid or die "setsid: $!"; + my $pid = fork(); + if ($pid < 0) { + die "fork: $!"; + } elsif ($pid) { + exit 0; + } + chdir "/"; + umask 0; + open (STDIN, "/dev/null"); + open (STDERR, ">&STDOUT"); +}; + + while (1) { my @waiting = $sel->can_read; foreach $fh (@waiting) {