关于程序崩溃有很多类似的问题,但我没有看到任何类似于我所要求的......
当我使用xkill
来终止我的应用程序时,我在stderr上收到以下消息:
(foo.pl:32471): Gdk-WARNING **: foo.pl: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.0.
我想做的事情(如果可能的话)是捕获该事件并在退出之前进行一些清理(保存prefs等)。
设定:
修改
示例源代码:
#!/usr/bin/perl -w
use Gtk3 -init;
my $win = Gtk3::Window->new;
$win->signal_connect('delete-event' => sub { cleanup('delete-event') } );
$win->signal_connect('destroy' => sub { cleanup('destroy') } );
$win->signal_connect('destroy-event' => sub { cleanup('destroy-event') } );
$win->signal_connect('unmap-event' => sub { cleanup('unmap-event') } );
$win->signal_connect('unmap' => sub { cleanup('unmap') } );
$win->show_all;
Gtk3->main;
sub cleanup {
my $event = shift;
print "Doing cleanup due to signal '$event'\n";
}
在此应用上使用xkill
时,不会执行print语句。
答案 0 :(得分:1)
我认为foo.pl
涉及各种各样的GUI。
至于xkill
,来自我系统的手册页
Xkill是一个强制X服务器关闭客户端连接的实用程序。这个程序非常危险,[...]
换句话说,它会从你的应用程序中“拉出地毯”,关闭它的连接。你可以在它内部查看它发生的各种事件,这取决于它的编写方式。然后你可以为它设置一个回调。
我认为我们会对此进行更多细节评论。