Несоответствующий ioctl для устройства при изменении egid в perl - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть сценарий Perl, который выполняется CI Jenkins, но когда он пытается выполнить следующий код, я получаю ошибку «Неуместное ioctl для устройства».то же самое вручную, как это, я не получаю ошибку

perl -e '$) = 99; if($!){print $! ."\n";} $> = 99; if($!){print $!."\n";}print     `whoami`;'

Любые подсказки, почему эта ошибка происходит, и что я имею в виду?У меня есть поиск в сети, но, кажется, это происходит, когда обработчики файлов открыты, но не видел каких-либо примеров, происходящих при смене пользователей.

Все сценарии выполняются от имени пользователя root.

Ответы [ 2 ]

1 голос
/ 05 февраля 2012

$! полезно только сразу после сбоя системного вызова. При успешной настройке группы или пользователя вы не знаете, что будет в $ !, и не можете рассчитывать на ложное значение. Вы можете попытаться использовать 'или die' при установке пользователя и группы, или, возможно, просто сравнив $) и $> с $ new_group и $ new_user снова после попытки их установить.

0 голосов
/ 03 февраля 2012

Чтобы отладить код, используйте этот метод и посмотрите, что происходит.Распечатайте каждую переменную содержание, когда вы получите ошибку.Пожалуйста, используйте строгие и предупреждения, они вам очень помогают!

Пожалуйста, включите вывод, если вы не можете решить эту проблему с помощью этого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...