#include #include #include static void dir_changed (GFileMonitor *monitor, GFile *file, GFile *other_file, GFileMonitorEvent event_type, gpointer user_data) { printf("changed\n"); } int main(int argc, char **argv) { GMainLoop *main_loop = NULL; GFile *dir = NULL; GFileMonitor *monitor = NULL; main_loop = g_main_loop_new(NULL, FALSE); if (!main_loop) { fprintf(stderr, "no main loop\n"); goto end; } dir = g_file_new_for_path(argv[1]); if (!dir) { fprintf(stderr, "no dir\n"); goto end; } monitor = g_file_monitor_directory(dir, 0, NULL, NULL); if (!monitor) { fprintf(stderr, "no monitor\n"); goto end; } g_signal_connect(monitor, "changed", G_CALLBACK(dir_changed), NULL); g_main_loop_run (main_loop); end: g_object_unref(monitor); g_object_unref(dir); g_object_unref(main_loop); printf("exiting\n"); return 0; }