1
我想監視某些目錄中新文件的創建並閱讀關於inotify的鏈接。我喜歡這個實現並使用它。但是,就我而言,我想監視一個有3級子目錄的目錄。inotify獲取目錄
我的想法是在每次創建新目錄時添加一個監視,但爲了執行此操作,我需要知道創建的目錄的路徑。不幸的是,inotify
的事件結構只能給我創建的文件目錄的名稱,而不是它的路徑。任何人都可以提出一個想法嗎?
add_watch(fd,root);
if (event->mask & IN_CREATE) {
if (event->mask & IN_ISDIR){
printf("%d DIR::%s CREATED\n", event->wd,event->name);
strcpy(new_dir,root);
strcat(new_dir,"/");
strcat(new_dir,event->name);
add_watch(fd,new_dir);
其中add_watch是:
void add_watch(int fd, char *root)
{
int wd;
struct dirent *entry;
DIR *dp;
dp = opendir(root);
if (dp == NULL)
{
perror("Error opening the starting directory");
exit(0);
}
/* add watch to starting directory */
wd = inotify_add_watch(fd, root, IN_CREATE | IN_MODIFY | IN_MOVED_TO);
這是確定的根目錄下,1級子目錄獲取也看了,但是當我嘗試手錶添加到Level-2子目錄路徑不正確。
用C++編寫的netbeans7.2,ubuntu12。
http://stackoverflow.com/questions/9313206/retrieve-the-full-path-name-from-inotify-event – us2012
的可能重複不是真的,因爲這個問題重複是指監測新的子目錄,而另一個只關心確定文件的名稱(帶路徑)。 –