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