connamn的mian檔案分析 待續

2021-05-31 21:43:59 字數 2344 閱讀 9766

事件迴圈適用於需要進行非同步操作的程式。像檔案、管道、裝置、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檔案自動生成 的區域,每次生成錄影動作的時候都會覆蓋上一次的...