2

我想知道在同一进程中多次初始化 perl 引擎是否安全。通过初始化,我的意思是这样的组合:

PERL_SYS_INIT3(&argc,&argv,&env);
my_perl = perl_alloc();
perl_construct(my_perl);
perl_parse(my_perl, NULL, argc, argv, (char **)NULL);
perl_run(my_perl);
perl_destruct(my_perl);
perl_free(my_perl);
PERL_SYS_TERM();

这是一个接一个地完成的,没有任何并发​​性。

我的问题是某些 perl 脚本在第二次运行期间崩溃了 perl 的引擎(在 Perl_op_free 内)。我修改 perl.exe (perlmain.c) 只是为了在没有垃圾的情况下多次运行引擎,我得到了相同的结果:

//perlmain.c
int
main(int argc, char **argv, char **env)
{
    int res;
    res = RunPerl(argc,argv,env);
    res = RunPerl(argc,argv,env);
    return res;
}

是否禁止多次初始化?还是应该以其他方式完成?我尝试了从 5.8 到 5.18 的 perl 引擎,每个人似乎都有同样的问题。

4

0 回答 0