php - Perl exec ('/usr/bin/php -v' ) 在 CentOS 6.6 上挂起,除非先关闭 STDIN

标签 php perl centos pipe stdin

我的问题是,这是预期的(为什么?)和/或这种行为是否也出现在其他系统上?

环境:

# 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) 
... 

迷你.pl:

#!/usr/bin/perl
exec('/usr/bin/php -v');

运行它并查看挂起的 PHP 进程:

# 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

但如果我关闭 STDIN:

迷你.pl:

#!/usr/bin/perl
close(STDIN);
exec('/usr/bin/php -v');

运行良好:

# 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

其他说明:

  • 我无法在 Mac OS X(perl 5.18.2、php 5.5.24)上重现这种挂起行为

谢谢,

最佳答案

我刚刚在 Ubuntu 14.04 和 RHEL 6.7 上进行了测试,无法重现问题。

我怀疑有一个错误导致它打印版本并尝试将 STDIN 作为 PHP 代码处理。当它挂起时,尝试按 Control-D,或键入几行 HTML/PHP,然后按 Control-D 以查看您的输入是否得到处理。

关于php - Perl exec ('/usr/bin/php -v' ) 在 CentOS 6.6 上挂起,除非先关闭 STDIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31850528/

相关文章:

php - 如何同时按数字和字母顺序对 varchar 查询列进行排序

oracle - 破折号导致 DBI 中的 SQL 问题

php - 如何在 Apache 中只允许一个文件

php - 将sql结果存入数组

php - SQL 计算个人最佳表中所有时间记录中保存的记录

perl - 如何从类方法访问 Moose 属性?

perl - 使用 FCGI 接受 POST 参数

amazon-web-services - 无法修改或调整 Amazon EBS 卷的大小

java - 用于从 oracle 社区获取最新 Oracle jre 的 REST API 是什么

centos - 无需任何交互即可生成 gpg 公钥和私钥