根据perl手册页的说法,我正在尝试做非阻塞的等待,waitpid($pid, WNOHANG);会做的。但下面的情况似乎阻碍了我们。打印结果需要2秒才能显示出来。
$pid = fork;
if (!$pid) {
exec("sleep 2");
}
waitpid($pid, WNOHANG);
$retCode = $?;
printf "%04x\n", $retCode;发布于 2017-03-23 02:17:36
错误1:您没有启用警告。
错误2:你没有声明WNOHANG。所以它是一个空字,它变成了字符串'WNOHANG'。当解释为数字时,字符串就变成0,没有任何警告,因为它看起来不像数字。因此,您使用waitpid调用flags=0,而不是使用WNOHANG标记。
use warnings;
use POSIX 'WNOHANG';https://stackoverflow.com/questions/42966005
复制相似问题