【发布时间】:2012-08-12 22:08:27
【问题描述】:
我运行下面的 perl 代码。
$retCode = ClearCase($cmd);
没有错误,但是当我运行它时它返回65280:
$retCode = ClearCase($logcmd);
我在 XP 和 Windows 2003 服务器上尝试过,结果相同,均使用 ActiveState Perl v5.14.2。
此代码在 2 年前在其他地方运行。
$g_HPPC_DEV_DRIVE = "M";
$g_HPPC_DEV_VIEW = "bldforge_AOMS_DEV";
$g_logfile = "logfile.txt";
$cmd = "startview $g_HPPC_DEV_VIEW";
$logcmd = $cmd . " >> $g_logfile 2>>&1";
$targetDir = $g_HPPC_DEV_DRIVE . ":\\" . $g_HPPC_DEV_VIEW;
print "\$targetDir = $targetDir\n";
print "Starting view .......\n";
#$retCode = system("cleartool startview bldforge_AOMS_DEV >> logfile.txt");
#$retCode = `cleartool startview bldforge_AOMS_DEV`;
$retCode = ClearCase($logcmd);
#$retCode = ClearCase($cmd);
sub ClearCase
{
my $retCode = 0;
my $args = $_[0];
my $cmd = "cleartool " . $args;
$retCode = Execute($cmd);
return $retCode;
}
sub Execute
{
my $retCode = 0;
my $cmd = $_[0];
if ($g_HPPC_BUILD_SIMULATION ne "Y")
{
print("Execute() Running...: $cmd\n");
$retCode = system($cmd);
#$retOut = `$cmd`;
#$retCode = $?;
#print("Command execute output: $retOut\n");
}
else
{
print("Execute() *** SIMULATION: $cmd\n");
}
print("Execute() retCode = $retCode, $cmd\n");
return $retCode;
}
这个65280退出码是什么意思?
【问题讨论】:
-
你应该
use autodie或检查$!看看你是否得到了更具描述性的信息。不过,“clearcase”可能由于某种原因被破坏了,您需要从它而不是您的 Perl 代码开始调查。 -
那必须是
use autodie qw(:all)才能使system死亡。 -
重定向操作符
2>>&1看起来很奇怪,试试单楔2>&1? -
与 2>&1 相同。这段代码都在另一个环境中工作。不知道为什么它在这里不起作用。
-
退出代码 65280 是无效的 unix 退出代码号。正确的范围是 7 位:0-255。我从 bash 5.0.18 shell 收到 65280 退出代码,在 Linux 上调用 python 3.8.5 以运行
exit_code = os.system("ssh user@host_ip 'some_command.sh'"使得 some_command 需要超过 5 分钟,然后我强制停止 sshd 服务器端,拔下计算机,拔下无线路由器或TCP 的其他一些迅速消亡。 Python 客户端没有收到来自操作系统的数据,python 将一个 64 位整数塞进 7 位:65280。这个数字可疑地接近最大 16 位值 65,536。
标签: windows perl clearcase cleartool