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

  • 相关阅读:
    数据结构-串的堆分配存储
    ServerSocket
    Java-坦克大战
    Java-输入输出流
    MyEclipse 快捷键
    数据结构-串的定长顺序存储
    我的软考资料集合
    软考中级软件设计师考试大纲
    2016年第一季度阅读书目
    中国大陆开源镜像网站汇总
  • 原文地址:https://www.cnblogs.com/strive-sun/p/13577610.html
Copyright © 2011-2022 走看看