Here is a Gtkmm example for detecting when a file or folder is created inside a directory:
#include <glibmm.h>
#include <giomm.h>
#include <iostream>
void file_changed(const Glib::RefPtr<Gio::File>& file, const Glib::RefPtr<Gio::File>& otherFile, Gio::FileMonitorEvent event)
{
if(event == Gio::FILE_MONITOR_EVENT_CREATED ){
std::cout << "File created: " << file->get_path() << std::endl;
}
}
int main(int argc, char* argv[]) {
if(argc < 2) {
std::cerr << "Usage: " << argv[0] << " directory_to_monitor" << std::endl;
return 1;
}
Glib::init();
Gio::init();
Glib::RefPtr<Glib::MainLoop> loop = Glib::MainLoop::create();
Glib::RefPtr<Gio::File> file = Gio::File::create_for_path(argv[1]);
Glib::RefPtr<Gio::FileMonitor> monitor = file->monitor_directory();
monitor->signal_changed().connect(sigc::ptr_fun(file_changed));
loop->run();
return 0;
}
Compile with
g++ -o test test.cpp $(pkg-config --cflags --libs glibmm-2.4 giomm-2.4)