Perl 命令行解释器在退出时崩溃
Perl Command Line Interpreter crashing on exit
我遇到一个问题,即退出 Perl Tkx
脚本会导致 Perl 命令行解释器崩溃。
例如:
use strict;
use warnings;
use Tkx;
my $mw = Tkx::widget->new('.');
my $button = $mw->new_ttk__button(-text => "Hello", -command => \&main);
Tkx::pack($button);
Tkx::MainLoop;
sub main {
print "TESTING\n";
exit 0;
}
此代码生成以下输出:
单击 "Hello" 按钮会调用 main()
子例程,该子例程打印 "TESTING" 然后尝试退出并使命令行解释器崩溃:
这似乎只发生在 Tkx
脚本中,并且只有当程序在调用 exit
之前已经进入 MainLoop
时才会崩溃。有人知道这里发生了什么吗?
Perl 版本信息:
这个问题似乎是在我从 64 位 Perl 切换到 32 位 Perl 时开始的。切换回 64 位版本的 Perl 解决了这个问题。
值得注意的是,choroba 在退出前使用 g_destroy
销毁主要 window 的解决方案确实解决了问题,即使 运行 是 32 位版本的 Perl。此外,即使 Perl 可以自行清理它,在退出之前手动销毁你的 window 可能是更好的做法......你永远不知道其他人试图 运行 你的脚本可能有什么版本的 Perl !
我遇到一个问题,即退出 Perl Tkx
脚本会导致 Perl 命令行解释器崩溃。
例如:
use strict;
use warnings;
use Tkx;
my $mw = Tkx::widget->new('.');
my $button = $mw->new_ttk__button(-text => "Hello", -command => \&main);
Tkx::pack($button);
Tkx::MainLoop;
sub main {
print "TESTING\n";
exit 0;
}
此代码生成以下输出:
单击 "Hello" 按钮会调用 main()
子例程,该子例程打印 "TESTING" 然后尝试退出并使命令行解释器崩溃:
这似乎只发生在 Tkx
脚本中,并且只有当程序在调用 exit
之前已经进入 MainLoop
时才会崩溃。有人知道这里发生了什么吗?
Perl 版本信息:
这个问题似乎是在我从 64 位 Perl 切换到 32 位 Perl 时开始的。切换回 64 位版本的 Perl 解决了这个问题。
值得注意的是,choroba 在退出前使用 g_destroy
销毁主要 window 的解决方案确实解决了问题,即使 运行 是 32 位版本的 Perl。此外,即使 Perl 可以自行清理它,在退出之前手动销毁你的 window 可能是更好的做法......你永远不知道其他人试图 运行 你的脚本可能有什么版本的 Perl !