Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否禁止对perl引擎(C/C+;+;)进行多次初始化?_C++_C_Perl_Perl Module - Fatal编程技术网

C++ 是否禁止对perl引擎(C/C+;+;)进行多次初始化?

C++ 是否禁止对perl引擎(C/C+;+;)进行多次初始化?,c++,c,perl,perl-module,C++,C,Perl,Perl Module,我想知道在同一个过程中多次初始化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_pe

我想知道在同一个过程中多次初始化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引擎,每个人似乎都有相同的问题。

虽然我不知道绝对答案,但基于,这似乎是不可能的。如果perl是用
-DMULTIPLICITY
编译的(由
-Dusethreads
暗示),那么您不仅可以有多个解释器,但是同时有多个口译员。不知道没有
-d多重乘性你能做什么。最后我发现了!当然,可以使用多个解释器,并且在perl构建期间默认使用-DMULTIPLICITY。问题是PERL_SYS_INIT/PERL_SYS_术语在每个进程中只能使用一次,而不管创建了多少解释器。谢谢你们两位的帮助!