小编Mic*_*cer的帖子

调用ReadDirectoryChangesW时,只有第一个调用返回任何更改(同步和异步)

以下是使用的最小程序ReadDirectoryChangesW.我遇到的问题是只有第一次GetQueuedCompletionStatus回复.无论对目录进行了多少更改,第二次循环都会永久阻塞.

我也尝试使用同步版本,并有完全相同的问题.

#include <array>
#include <cassert>
#include <iostream>
#include <Windows.h>

int main() {
  // Open the directory to monitor.
  HANDLE dir = ::CreateFileA(
      "G:\\Program Files (x86)\\Steam\\steamapps\\common\\eve online"
    , FILE_LIST_DIRECTORY
    , FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE
    , NULL
    , OPEN_EXISTING
    , FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED
    , NULL
    );

  if (dir == INVALID_HANDLE_VALUE) {
    std::cout << "Failed to open directory for change notifications!\n";
    return 1;
  }

  // Setup IOCP.
  HANDLE iocp = ::CreateIoCompletionPort(
      dir
    , NULL
    , NULL
    , …
Run Code Online (Sandbox Code Playgroud)

c++ winapi readdirectorychangesw

6
推荐指数
1
解决办法
1632
查看次数

如何在没有目录迭代的情况下在Linux上获取区分大小写的路径?

给定一个/network/cifs不区分大小写的已安装的cifs文件系统,如何使用C获取区分大小写的路径?

例如,fs有一个文件/network/cfis/Adena/t.txt.鉴于/network/cfis/AdEnA/T.txt(正确解决),我想要/network/cfis/Adena/t.txt.

我知道一种方法是在路径上递归迭代,在所有小写中匹配它们,并获得目录迭代返回的实际情况.但是,这涉及很多我不愿意做的系统调用.

更改安装选项不是解决方案.

如果这不可能,是否可以确定路径是否在不区分大小写的文件系统上?这样我就可以避免执行递归目录迭代,除非需要.

c linux posix cifs path

5
推荐指数
1
解决办法
1035
查看次数

标签 统计

c ×1

c++ ×1

cifs ×1

linux ×1

path ×1

posix ×1

readdirectorychangesw ×1

winapi ×1