事件迴圈適用於需要進行非同步操作的程式。像檔案、管道、裝置、socket、timer、idle和其他自定義的事件都可以產生event,要讓gmainloop能夠處理這些型別的event,首先就必須把它們加到gmainloop去。
static goptionentry options = ,,,
,,,,
,
, ,,
};
main函式主體
int main(int argc, char *argv)
else
g_printerr("an unknown error occurred\n");
exit(1);
}g_option_context_free(context);//這個是glib的特點,一般建立乙個東西以後,會將其釋放
/*一下是判斷傳遞進來了什麼引數*/
if (option_version == true)
if (option_detach == true)
}......
main_loop = g_main_loop_new(null, false);//建立乙個迴圈體
......
dbus_error_init(&err);
conn = g_dbus_setup_bus(dbus_bus_system, connman_service, &err);//在system匯流排上建立connman的d-bus物件,並同時設定watch、timeout、depatch等函式做非同步處理
if (conn == null) else
fprintf(stderr, "can't register with system bus\n");
exit(1);
}g_dbus_set_disconnect_function(conn, disconnect_callback, null, null);
__connman_log_init(option_debug, option_detach);
__connman_dbus_init(conn);
config = load_config(configdir "/main.conf");
parse_config(config);
__connman_storage_init();
__connman_element_init(option_device, option_nodevice);
__connman_agent_init();
__connman_iptables_init();
__connman_tethering_init();
__connman_counter_init();
__connman_manager_init();
__connman_profile_init();
__connman_config_init();
__connman_stats_init();
__connman_clock_init();
__connman_resolver_init(option_dnsproxy);
__connman_ipconfig_init();
__connman_rtnl_init();
__connman_task_init();
__connman_proxy_init();
__connman_detect_init();
__connman_session_init();
__connman_timeserver_init();
__connman_plugin_init(option_plugin, option_noplugin);
__connman_element_start();
g_free(option_device);
g_free(option_plugin);
g_free(option_nodevice);
g_free(option_noplugin);
memset(&sa, 0, sizeof(sa));
sa.sa_handler = sig_term;
sigaction(sigint, &sa, null);
sigaction(sigterm, &sa, null);
g_main_loop_run(main_loop);//啟動迴圈,程式會在g_main_loop_run函式阻塞,通知迴圈退出的函式是g_main_loop_quit(可以使用定時器等)。退出後函式繼續向下執行
......
}
mian 的引數和返回值到底是什麼?
一直以來都使用著void main 但是從沒有關注過引數和返回值 確實是缺少哪種疑問的學習態度,從來都是來學這是什麼,卻沒有考慮為什麼要這樣寫。其實main 是有引數的,而且是兩個,它的原型如下 int main int argc,char argv 其中,argc代表命令列中字串的個數,argv是...
CodeUI Test UIMap錄製檔案分析一
uimap檔案是coded ui test的核心檔案,它分為三個檔案。1.uimap.uitest 這是xml檔案,裡面描述了所有需要操作的目標控制項以及進行操作的動作等。2.uimap.designer.cs 根據uimap.uitest檔案自動生成 的區域,每次生成錄影動作的時候都會覆蓋上一次的...
CodeUI Test UIMap錄製檔案分析一
uimap檔案是coded ui test的核心檔案,它分為三個檔案。1.uimap.uitest 這是xml檔案,裡面描述了所有需要操作的目標控制項以及進行操作的動作等。2.uimap.designer.cs 根據uimap.uitest檔案自動生成 的區域,每次生成錄影動作的時候都會覆蓋上一次的...