Как я могу использовать соединение с базой данных в разветвленном процессе в Perl?
Вопрос
Раньше я создавал следующие программы на Perl:
my $db = DBconnection with DB2
if ($pid = fork()) {
#parent
} else {
#child
$db->execute("SELECT ****");
exit;
}
wait();
$db->execute("SELECT ****");
Я думал, что он ждал окончания дочернего процесса, чтобы захотеть это сделать, и будет управлять им для БД с помощью пропроцесса.
Кроме того, БД не связана с содержимым ошибки.
В чем дело?
Решение
Вам нужно сделать много вещей, чтобы позволить дочернему процессу использовать дескриптор DBI своего родительского процесса.См. эту статью о Perl Monks о DBI, форк и клон.
Другие советы
Попробуйте включить эту строку кода в дочерний блок:
$db->{InactiveDestroy} = 1;
Не связан с StackOverflow