退出时如何设置 GTK 应用程序的状态代码?
How can I set the status code of the GTK app upon quitting?
我正在编写一个利用 GTK 创建 GUI 的应用程序。
在下面的示例代码中,函数 run_gui
启动 GTK 应用程序。
当其中一个事件处理程序出现问题时,我希望 GTK 应用程序关闭,并且我希望 run_gui
知道该应用程序因故障而关闭。一种自然的方法似乎是在 returning 时使 g_application_run
return 成为特定的状态代码。
我了解到关闭应用程序的合适方法是从事件处理程序调用 g_quit_application
(如果不是这样,请更正)。但是,我想知道如何设置 return 从 g_application_run
编辑的状态代码,以便 run_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 */
}
}
GApplication 中唯一允许您 return 退出代码的部分是 GApplication::local_command_line()
;否则,GApplication 将 return 1 表示任何内部失败,或 0 表示成功。
如果激活后出现退出状态,需要您自行处理。
记住:激活是在当前 运行 实例上执行的。只有当前的 运行 进程会发出激活——任何额外的实例都会立即终止。
我正在编写一个利用 GTK 创建 GUI 的应用程序。
在下面的示例代码中,函数 run_gui
启动 GTK 应用程序。
当其中一个事件处理程序出现问题时,我希望 GTK 应用程序关闭,并且我希望 run_gui
知道该应用程序因故障而关闭。一种自然的方法似乎是在 returning 时使 g_application_run
return 成为特定的状态代码。
我了解到关闭应用程序的合适方法是从事件处理程序调用 g_quit_application
(如果不是这样,请更正)。但是,我想知道如何设置 return 从 g_application_run
编辑的状态代码,以便 run_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 */
}
}
GApplication 中唯一允许您 return 退出代码的部分是 GApplication::local_command_line()
;否则,GApplication 将 return 1 表示任何内部失败,或 0 表示成功。
如果激活后出现退出状态,需要您自行处理。
记住:激活是在当前 运行 实例上执行的。只有当前的 运行 进程会发出激活——任何额外的实例都会立即终止。