gpt4 book ai didi

perl - 从子堆栈中删除 Perl 模块

转载 作者:行者123 更新时间:2023-12-02 06:21:15 27 4
gpt4 key购买 nike

我有一个加载 DBI (DBD::mysql) 然后 fork 子进程的守护进程。我想防止 DBI 模块在 fork 子进程的内存中。

所以像这样:

#!/usr/bin/perl

use DBI;
my $dbh = DBI->connect(db_info);

my $pid = fork();
if($pid){

# The forked process here should not have DBI loaded

}

感谢您的帮助!

最佳答案

加载模块就是像脚本一样执行它。 Perl 的模块和脚本之间绝对没有区别。要卸载模块,需要撤消运行它的影响。这不能机械地完成,手动完成也不可行。

最简单的解决方案是让 child exec 一些东西。它甚至可能是您已经在运行的脚本。

exec($^X, $0, '--child', @args)

可以通过将套接字绑定(bind)到 child 的 fd 0 (stdin) 和 fd 1 (stdout) 来让 child 访问套接字。

关于perl - 从子堆栈中删除 Perl 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9145990/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com