在linux上,如何通过系统调用或shell命令监控file/directory的变化?

On linux, how to monitor the change of a file/directory, by system call or shell command?

在windows编程下,win32 api允许我们监视文件或目录的状态:当更改时,有用户回调函数的事件通知。例如。在一个资源管理器window中创建目录时,与该目录相关的其他资源管理器window也会被刷新。

我的问题:如何在 linux 上执行此操作? linux 是否提供任何系统调用或 posix api 或 shell 命令来监视 file/directory?

我知道git可以做到,但是git是怎么做到的?

谢谢!

相当于LinuxAPI是inotify:

The inotify API provides a mechanism for monitoring file system events. Inotify can be used to monitor individual files, or to monitor directories. When a directory is monitored, inotify will return events for the directory itself, and for files inside the directory.