Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中更改egid时设备的ioctl不正确_Perl - Fatal编程技术网

在perl中更改egid时设备的ioctl不正确

在perl中更改egid时设备的ioctl不正确,perl,Perl,我有一个由Jenkins CI执行的perl脚本,但是当它试图执行以下代码时,我得到了一个“设备的ioctl不适当”错误 但是,如果a像这样手动执行相同的操作,我不会收到任何错误 perl -e '$) = 99; if($!){print $! ."\n";} $> = 99; if($!){print $!."\n";}print `whoami`;' 有什么线索可以解释为什么会发生这个错误,我的意思是什么?我曾在网上搜索过,但它似乎是在文件处理程序打开时发生的,没有看到任何

我有一个由Jenkins CI执行的perl脚本,但是当它试图执行以下代码时,我得到了一个“设备的ioctl不适当”错误

但是,如果a像这样手动执行相同的操作,我不会收到任何错误

perl -e '$) = 99; if($!){print $! ."\n";} $> = 99; if($!){print $!."\n";}print     `whoami`;'
有什么线索可以解释为什么会发生这个错误,我的意思是什么?我曾在网上搜索过,但它似乎是在文件处理程序打开时发生的,没有看到任何关于它的例子是在更改用户时发生的


所有脚本都以root用户身份执行。

要调试代码,请使用此方法,然后查看发生了什么。当收到错误时,打印每个变量内容。请使用严格的警告和警告,他们会注意你很多

如果无法使用此方法解决此问题,请包含输出

use strict;
use warnings;
use Data::Dumper;

$) = $new_group;
warn "\$), \$new_group: ".Dumper($),$new_group);
...

美元!仅在系统调用失败后直接使用。当成功设置组或用户时,您不知道美元中会有什么内容!,不能相信它是一个错误的值。在设置用户和组时,您可能会尝试使用“或死亡”,或者在尝试设置$new\u group和$new\u user之后,再将$)和$>与$new\u group和$new\u user进行比较。

我知道$new\u group的内容,这是一个有效的组id。我可以从if中的打印输出中看到。但是如果$new_组的末尾包含“/r”之类的内容呢?用Data::Dumper打印出来并证明:-)Thnx,很好。因此,基本上perl文档是关闭的,因为它声明您必须检查$!对于错误。如果命令成功,则该变量($!)可能包含其他内容。这样就没有必要检查它的故障
use strict;
use warnings;
use Data::Dumper;

$) = $new_group;
warn "\$), \$new_group: ".Dumper($),$new_group);
...