C 退出时如何设置GTK应用程序的状态代码?
我正在编写一个利用GTK创建GUI的应用程序 在下面的示例代码中,函数C 退出时如何设置GTK应用程序的状态代码?,c,user-interface,gtk,C,User Interface,Gtk,我正在编写一个利用GTK创建GUI的应用程序 在下面的示例代码中,函数run\u gui启动GTK应用程序 当其中一个事件处理程序出现问题时,我希望GTK应用程序关闭,并且我希望运行_gui知道应用程序由于故障而关闭。一种自然的方法似乎是让g\u应用程序运行在返回时返回特定的状态代码 我了解到关闭应用程序的一个合适方法是从事件处理程序调用g\u quit\u应用程序(如果不是,请更正)。但是,我想知道如何设置从g\u应用程序运行返回的状态代码,以便run\u gui可以检查它并相应地执行操作 用
run\u gui
启动GTK应用程序
当其中一个事件处理程序出现问题时,我希望GTK应用程序关闭,并且我希望运行_gui
知道应用程序由于故障而关闭。一种自然的方法似乎是让g\u应用程序运行
在返回时返回特定的状态代码
我了解到关闭应用程序的一个合适方法是从事件处理程序调用g\u quit\u应用程序
(如果不是,请更正)。但是,我想知道如何设置从g\u应用程序运行
返回的状态代码,以便run\u gui
可以检查它并相应地执行操作
用于说明我想做什么的代码:
#include <gtk/gtk.h>
static void activate(GtkApplication* app, gpointer user_data) {
GtkWidget* window = gtk_application_window_new (app);
gtk_window_set_title(GTK_WINDOW(window), "Window");
gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
gtk_widget_show_all(window);
bool success = do_something();
if (!success) {
/* How do I set the exit status of the GTK app? */
g_application_quit(G_APPLICATION(app));
}
}
void run_gui(void) {
GtkApplication* app = gtk_application_new("my.app", G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
int status = g_application_run(G_APPLICATION(app), 0, NULL);
g_object_unref(app);
if (status == 0) {
/* Do something about success */
} else {
/* Do something about failure */
}
}
#包括
静态无效激活(GTK应用程序*应用程序、gpointer用户数据){
GtkWidget*窗口=gtk_应用程序_窗口_新(应用程序);
gtk_窗口设置标题(gtk_窗口(窗口),“窗口”);
gtk_窗口设置默认大小(gtk_窗口(窗口),200200);
gtk_小部件_全部显示(窗口);
bool success=做某事;
如果(!成功){
/*如何设置GTK应用程序的退出状态*/
g_应用程序_退出(g_应用程序(app));
}
}
void run_gui(void){
GtkApplication*app=gtk_application_new(“my.app”,G_application_FLAGS_NONE);
g_信号连接(应用程序,“激活”,g_回调(激活),空);
int status=g_应用程序运行(g_应用程序(应用程序),0,空);
g_object_unref(应用程序);
如果(状态==0){
/*为成功做点什么*/
}否则{
/*对失败做些什么*/
}
}
GAApplication中唯一允许您返回退出代码的部分是;否则,对于任何内部故障,GAApplication将返回1,对于成功,将返回0
如果激活后您有退出状态,您需要自己处理
记住:激活是在当前运行的实例上执行的。只有当前运行的进程才会发出激活,任何其他实例都会立即终止。GAApplication中允许您返回退出代码的唯一部分是;否则,对于任何内部故障,GAApplication将返回1,对于成功,将返回0 如果激活后您有退出状态,您需要自己处理 记住:激活是在当前运行的实例上执行的。只有当前正在运行的进程才会发出激活,任何其他实例都会立即终止