我运行了下面的Perl代码。
$retCode = ClearCase($cmd);
代码没有错误,但是当我运行下面的代码时,它会返回 65280
:
$retCode = ClearCase($logcmd);
我在XP和Windows 2003服务器上尝试了一下,结果相同,都是使用ActiveState Perl v5.14.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退出代码是什么意思?
autodie
或检查$!
来查看是否有更详细的信息。不过,很可能是由于某种原因导致 "clearcase" 出现了问题,所以你需要从那里开始调查,而不是从你的 Perl 代码开始。 - zostaysystem
也能致命化,必须使用use autodie qw(:all)
。 - daxim2>>&1
看起来很奇怪,尝试使用单个楔形符号2>&1
? - tripleeeexit_code = os.system("ssh user@host_ip 'some_command.sh'")
时,收到了65280的退出码。这个命令需要超过5分钟,并且我强制停止了sshd服务器端、拔掉了电脑、拔掉了无线路由器或者其他TCP的快速崩溃。Python客户端没有从操作系统接收到任何数据,Python将一个64位整数压缩成7位:65280。这个数字非常接近于最大的16位值65536,因此有些可疑。 - Eric Leschinski