0
大约有崩溃的程序很多类似的问题,但我看不出有什么很喜欢这么问我...如何捕捉致命IO错误11(资源暂时不可用)
当我使用xkill
来杀了我的申请,我得到标准错误以下消息:
(foo.pl:32471): Gdk-WARNING **: foo.pl: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.0.
我想要做什么(如果可能)是赶上该事件,并做一些清理(保存首选项等)在退出之前。
设置:
- Linux的
- 的Perl 5.16
- Gtk3 3.8.8
编辑:
源代码示例:
#!/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
时,不执行打印语句。
添加了连接多个信号的示例代码,其中没有一个捕获此事件......也许我只是没有连接正确的一个,或者可能有不同的方法。 – TheAmigo
@TheAmigo我看到了 - 谢谢。是的,这些事件都不是服务器关闭连接......我在看文档,不记得 – zdim
@TheAmigo信号/事件需要在相当高的水平(我不确定窗口本身会得到个机会)。例如,我查看了[Glib异常](http://gtk2-perl.sourceforge.net/doc/pod/Glib.html#EXCEPTIONS)(但这只是一个猜测)。现在我总是空着,稍后可以看到它。 – zdim