日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

linux c 监控文件内容改变,如何让程序监视C ++中的文件修改?

發(fā)布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux c 监控文件内容改变,如何让程序监视C ++中的文件修改? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

WinCE的一個工作例子void?FileInfoHelper::WatchFileChanges(?TCHAR?*ptcFileBaseDir,?TCHAR?*ptcFileName?){static?int?iCount?=?0;DWORD?dwWaitStatus;?HANDLE?dwChangeHandles;?if(?!?ptcFileBaseDir?||?!?ptcFileName?)?return;wstring?wszFileNameToWatch?=?ptcFileName;dwChangeHandles?=?FindFirstChangeNotification(

ptcFileBaseDir,

FALSE,

FILE_NOTIFY_CHANGE_FILE_NAME?|

FILE_NOTIFY_CHANGE_DIR_NAME?|

FILE_NOTIFY_CHANGE_ATTRIBUTES?|

FILE_NOTIFY_CHANGE_SIZE?|

FILE_NOTIFY_CHANGE_LAST_WRITE?|

FILE_NOTIFY_CHANGE_LAST_ACCESS?|

FILE_NOTIFY_CHANGE_CREATION?|

FILE_NOTIFY_CHANGE_SECURITY?|

FILE_NOTIFY_CHANGE_CEGETINFO????);if?(dwChangeHandles?==?INVALID_HANDLE_VALUE)?{

printf("\n?ERROR:?FindFirstChangeNotification?function?failed?[%d].\n",?GetLastError());

return;}while?(TRUE)?{

//?Wait?for?notification.

printf("\n\n[%d]?Waiting?for?notification...\n",?iCount);

iCount++;

dwWaitStatus?=?WaitForSingleObject(dwChangeHandles,?INFINITE);

switch?(dwWaitStatus)

{

case?WAIT_OBJECT_0:

printf(?"Change?detected\n"?);

DWORD?iBytesReturned,?iBytesAvaible;

if(?CeGetFileNotificationInfo(?dwChangeHandles,?0,?NULL,?0,?&iBytesReturned,?&iBytesAvaible)?!=?0?)

{

std::vector?vecBuffer(?iBytesAvaible?);

if(?CeGetFileNotificationInfo(?dwChangeHandles,?0,?&vecBuffer.front(),?vecBuffer.size(),?&iBytesReturned,?&iBytesAvaible)?!=?0?)?{

BYTE*?p_bCurrent?=?&vecBuffer.front();

PFILE_NOTIFY_INFORMATION?info?=?NULL;

do?{

info?=?reinterpret_cast(?p_bCurrent?);

p_bCurrent?+=?info->NextEntryOffset;

if(?wszFileNameToWatch.compare(?info->FileName?)?==?0?)

{

wcout?<FileName?<Action;

switch(info->Action)?{

case?FILE_ACTION_ADDED:

break;

case?FILE_ACTION_MODIFIED:

break;

case?FILE_ACTION_REMOVED:

break;

case?FILE_ACTION_RENAMED_NEW_NAME:

break;

case?FILE_ACTION_RENAMED_OLD_NAME:

break;

}

}

}while?(info->NextEntryOffset?!=?0);

}

}

if?(?FindNextChangeNotification(?dwChangeHandles?)?==?FALSE?)

{

printf("\n?ERROR:?FindNextChangeNotification?function?failed?[%d].\n",?GetLastError());

return;

}

break;

case?WAIT_TIMEOUT:

printf("\nNo?changes?in?the?timeout?period.\n");

break;

default:

printf("\n?ERROR:?Unhandled?dwWaitStatus?[%d].\n",?GetLastError());

return;

break;

}}FindCloseChangeNotification(?dwChangeHandles?);}

總結

以上是生活随笔為你收集整理的linux c 监控文件内容改变,如何让程序监视C ++中的文件修改?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。