2014-02-28 71 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) 
相關問題