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 : Sélectionner tout - Visualiser dans une fenêtre à part
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();