J'ai épuré au maximum le code, en otant la partie "utile". Avec ce peu de code, le bug survient toujours au moment de l'arrêt d'apache...
Côté php :
echo "Begin script..";
exec("perl ./test.pl"); // ai aussi essayé avec passthru et system
// même probleme...
echo "After exec...";
Côté perl :
#!/usr/bin/perl -w
use strict;
use POSIX 'setsid';
# First fork
if (!fork)
{
# Redirecting input and output to /dev/null
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
open STDOUT, '>/dev/null';
# Second fork, daemon isn t related anymore to the terminal.
if (!fork)
{
chdir '/'
or die "Can't chdir to /: $!";
setsid;
open STDERR, '>&STDOUT' or die "Can't dup";
while (my $line = 1)
{
}
}
exit 0;
}
wait;
J'ai donc fermé les entrées sorties, je n'utilise pas d'autre file descripteur/socket...
Ca commence à me desespérer, je n'aimerais pas livrer un produit qui peut empêcher apache de redémarerr s'il est lancé au moment de son arrêt....
[^] # Re: Fermeture des fichiers
Posté par Andonya . En réponse au message Problème entre php (fonction exec) et un daemon perl.. Évalué à 1.
Côté php :
echo "Begin script..";
exec("perl ./test.pl"); // ai aussi essayé avec passthru et system
// même probleme...
echo "After exec...";
Côté perl :
#!/usr/bin/perl -w
use strict;
use POSIX 'setsid';
# First fork
if (!fork)
{
# Redirecting input and output to /dev/null
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
open STDOUT, '>/dev/null';
# Second fork, daemon isn t related anymore to the terminal.
if (!fork)
{
chdir '/'
or die "Can't chdir to /: $!";
setsid;
open STDERR, '>&STDOUT' or die "Can't dup";
while (my $line = 1)
{
}
}
exit 0;
}
wait;
J'ai donc fermé les entrées sorties, je n'utilise pas d'autre file descripteur/socket...
Ca commence à me desespérer, je n'aimerais pas livrer un produit qui peut empêcher apache de redémarerr s'il est lancé au moment de son arrêt....
Merci d'avance,
Andonya