zoukankan      html  css  js  c++  java
  • win32

    任务:创建一个进程,并在进程内创建一个文本,再创建另一个进程来监控第一个进程内的文本变化

    //Process 1
    #include <windows.h>
    #include <iostream>
    int wmain(int argc, wchar_t* argv[])
    {
        std::string buffer;
        while (1)
        {
            std::cin >> buffer;
            HANDLE hFile = CreateFile(L"log.txt", FILE_APPEND_DATA, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
            DWORD written = 0;
            WriteFile(hFile, buffer.c_str(), buffer.size(), &written, NULL);
            CloseHandle(hFile);
        }
        return 0;
    }
    //Process 2
    #include <windows.h>
    #include <iostream>
     
    int wmain(int argc, wchar_t* argv[])
    {
        DWORD returned = 0;
        DWORD dwOffset = 0;
        FILE_NOTIFY_INFORMATION* pInfo = NULL;
    
        HANDLE hFile = CreateFile(L"Directory of log.txt", GENERIC_READ, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_BACKUP_SEMANTICS, 0);
    
        while (1)
        {
            BYTE szBuffer[1024] = { 0 };
            
            ReadDirectoryChangesW(hFile, szBuffer, sizeof(szBuffer), false, FILE_NOTIFY_CHANGE_SIZE, &returned, NULL, NULL);
            do
            {
                pInfo = (FILE_NOTIFY_INFORMATION*)&szBuffer[dwOffset];
                if (wcscmp(pInfo->FileName, L"log.txt") == 0)
                {
                    HANDLE hFile = CreateFile(L"path\log.txt", FILE_APPEND_DATA, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
                    DWORD size = GetFileSize(hFile, NULL);
                    std::cout << "File Size: " << size << std::endl;
                    CloseHandle(hFile);
                }
                dwOffset += pInfo->NextEntryOffset;
            } while (pInfo->NextEntryOffset != 0);
        }
        return 0;
    }

    相关:https://stackoverflow.com/questions/63620862/using-file-as-a-mutex-with-createfile/63627936#63627936

  • 相关阅读:
    [BZOJ 2653]middle
    svn提交错误
    查看当前功能地址
    后台纯代码--短信验证
    图片验证码~~~之后台生成随机数
    小程序之~~登录后台代码
    小程序登录过程简介
    小程序之~微信登录后台代码
    小程序之~~基于微信登录,后台代码
    小程序之~~短信验证
  • 原文地址:https://www.cnblogs.com/strive-sun/p/13577610.html
Copyright © 2011-2022 走看看