La mia domanda è, è questo previsto (e perché?) E/o questo comportamento è visto anche su altri sistemi?Perl exec ('/ usr/bin/php -v') si blocca su CentOS 6.6 a meno che STDIN non sia chiuso prima
Ambiente:
# cat /etc/*-release
CentOS release 6.6 (Final)
...
# perl -v
This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi
...
# php -v
PHP 5.4.41 (cli) (built: May 14 2015 23:15:28)
...
mini.pl:
#!/usr/bin/perl
exec('/usr/bin/php -v');
Esegui e vedere il processo di PHP Hung:
# perl mini.pl &
[2] 16958
[1] Killed perl mini.pl
# ps ax | grep 16958
16958 pts/2 T 0:00 /usr/bin/php -v
16960 pts/2 S+ 0:00 grep 16958
[2]+ Stopped perl mini.pl
Ma se chiudo STDIN:
mini.pl:
#!/usr/bin/perl
close(STDIN);
exec('/usr/bin/php -v');
funziona benissimo:
# perl mini.pl &
[1] 16976
# PHP 5.4.41 (cli) (built: May 14 2015 23:15:28)
...
[1]+ Done perl mini.pl
# ps ax | grep 16976
16978 pts/2 S+ 0:00 grep 16976
Altre note:
- non riesco a riprodurre questo comportamento appeso su Mac OS X (Perl 5.18.2, php 5.5.24)
Grazie,
ho scoperto che se compilo PHP dai sorgenti, funziona benissimo (vs questo comportamento impiccagione per 'yum install php'). Quindi userò questa soluzione alternativa. –