c++ - 将 inotify 与 MinGW 结合使用

标签 c++ linux windows inotify

是否可以在 Windows 上使用 inotify 和 mingw 编译? 因为我会监控更改Linux服务器上的文件,但该程序将在Windows7机器上编译和运行。我想我必须使用 inotify 而不是 Win32 API FindFirstChangeNotification。 是否可以从 Windows 机器上监控 Linux 目录?

我编译时的错误:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\simon\Desktop>g++ main.c -o main.exe
main.c:5:25: fatal error: sys/inotify.h: No such file or directory
      #include <sys/inotify.h>
                     ^
compilation terminated.

最佳答案

不,inotify 是 Linux 内核提供的一个特性,所以为了使用它,程序必须在 Linux 上运行。在 Windows 上运行的程序必须使用 Windows API。

如果您的应用程序在 Windows 上运行并可以访问 Linux 服务器上的文件,它仍然使用 Windows API 执行此操作,并且 Linux 文件系统通过某些网络文件系统(最有可能是 SMB 或 NFS)公开,这会完成翻译 API 的工作并通过网络发送字节。

总而言之,如果您想监控远程系统上的更改,首先确保您的网络文件系统支持更改通知,然后使用“本地”API - 在您的情况下,Windows API。

关于c++ - 将 inotify 与 MinGW 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36125844/

相关文章:

c++ - 在 C++ 中使用内存位置字符串

c++ - windeployqt 没有找到所有依赖项

c# - 如何在对象上进行交易

c++ - 如何正确杀死 fork 之子

linux - hp-unix 中的 shell/sbin/sh 是哪个?

linux - 什么是 Linux 中的双点 (..) 和单点 (.)?

string - 汉字输出时如何避免乱码

php - .htaccess 在 Linux 上不工作

c++ - Ubuntu 16.04,Nvidia toolkit 8.0 RC,暗网编译错误: expected a ";"

windows - 在后台运行批处理文件