écrire sur stdout aprés un fork
Bonjour à tous,
Ma question est dans le sujet, j'aimerai pouvoir écrire certaines informations sur la sortie standard aprés avoir mit mon processus en arriere plan.
voici ce que j'ai fais, tout fonctionne sauf le print sur STDOUT pourrivez vous m'aider ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
use strict;
# Modules diverses
use IO::Socket;
use Getopt::Std;
# Modules services
use lib 'src';
use Service;
use Client;
use Commands;
# variables diverses
my $daemon = 0;
my $curdir = $ENV{'PWD'};
$| = 1;
# analyse
my %opts;
getopts('d',\%opts);
if(defined($opts{'d'})) { $daemon = 1; }
undef %opts;
# si option -d mise en arriere plan
if ($daemon) {
use POSIX 'setsid';
chdir '/' or die "Impossible de mettre le repertoire courant sur root: $!";
open STDIN, '/dev/null' or die "Impossible de lire /dev/null: $!";
open STDOUT, '>/dev/null' or die "Impossible d'écrire vers /dev/null: $!";
defined(my $pid = fork) or die "Impossible de mettre en arriere-plan: $!";
exit if $pid;
setsid or die "Impossible de démarrer une nouvelle session: $!";
# creation du fichier contenant le pid
open FILE, ">$curdir/uworld.pid" or die "Impossible de créer le fichier PID";
print FILE "$$";
close FILE;
print STDOUT "test\n";
}
# creation du service
my $tmp = Service->new(); |