If you have perl available the following should do what you
need. Wouldn't be too difficult to write something similar
in C as well.

#!/usr/bin/env perl

use strict;
use warnings;

use POSIX qw//;

sub daemonize {
        defined (my $pid = fork()) or die "Can't fork: $!";
        exit if $pid;
        defined (my $ppid = fork()) or die "Can't fork: $!";
        exit if $ppid;
        chdir "/" or die "Can't chdir '/': $!";
        POSIX::setsid or die "Can't start new session: $!";
}

daemonize();

eval {
        my @cmd = @ARGV;
        exec @cmd;
};

warn $@ if $@;

exit;

Edgar

Reply via email to