У меня есть сценарий Perl, который вызывает sqldr и загружает данные в таблицу из плоского файла.
Теперь моя проблема в том, что хотя sqldr нормально загружает таблицу, он возвращает код выхода как -1 (полученный с помощью $?
), когда я попытался использовать $!
, он говорит No child processes
.
Я выполняю этот скрипт с помощью команды sudo
sudo -u <uname> bash
<script_name>.pl
Этот Perl-скрипт работает нормально, если я запускаю его прямо из своего идентификатора пользователя. Я действительно не понимаю, почему эта ошибка появляется только тогда, когда я запускаю через пользователя sudo.
Пожалуйста, помогите мне понять эту ошибку.
РЕДАКТИРОВАТЬ: он работает нормально, если я даю $SIG{CHLD} = 'DEFAULT';
в своем коде. Но если я уберу этот шаг, проблема снова появится. Я получил этот код из WWW, когда просматривал эту ошибку. Есть идеи, что он делает?
wait()
. - person Andy   schedule 09.04.2011system
используетwaitpid
(или его форму) для ожидания завершения вашей команды. Если вы игнорируете завершение дочернего процесса, тоwaitpid
попытается получить уже исчезнувший дочерний процесс. Использование ожидания, когда у вас нет дочерних процессов, дает эту ошибку. - person unpythonic   schedule 07.06.2011