2014-02-28 38 views
1

我是一名Linux新手,这看起来像是一个容易解决的问题,但我对一个解决方案感到不知所措。我想在写入某个目录时执行脚本。我打算在该文件夹上安装某种观察器,以便触发脚本运行。我已经在网上找到关于使用incron,watch或inotify的条目。我认为incron是我想要的,但绝对没有在线资源可以帮助您完成整个过程。我是否想要使用incron?如果是这样,我如何才能使其工作?在我incrontab我有Linux:如何在写入目录时执行脚本

/home/myusername/folder IN_CLOSE_WRITE /var/www/runMe.sh 

我试过的一些变化,但看起来这是正确的。我一直在网上查找几个小时,所以我非常沮丧。我创建了一个列出root和myusername的incron.allow文件,我开始了incrond服务,但是当上面指定的目录被写入shell脚本时,不会执行。我在CentOS 6.5上,目录正在被另一台机器写入。谢谢你提供的任何帮助。

回答

0

这里是当一个目录中创建一个文件或文件夹检测的gtkmm例子:

#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; 
} 

编译

g++ -o test test.cpp $(pkg-config --cflags --libs glibmm-2.4 giomm-2.4) 
相关问题