gpt4 book ai didi

c - 检测对打开文件的更改

转载 作者:IT王子 更新时间:2023-10-29 00:17:00 27 4
gpt4 key购买 nike

假设我有一个打开的文件。我如何检测文件何时被后台的另一个程序更改。如果打开的文件被另一个进程更改,一些文本编辑器可以检测并更新它。

我特别要求在 Linux 下使用 C(这似乎取决于操作系统)。

最佳答案

如果您不想使用 stat 轮询文件,并且不介意特定于 Linux,那么您可以使用 inotify API。您的内核需要是 2.6.13 或更新版本和 glibc 2.4 或更新版本(如果您的目标是过去 2 或 3 年的任何东西,它们将是)。 API 基本上为您提供了一个文件描述符,您可以通过轮询选择读取 来获取有关已修改文件的信息。如果您的应用程序是交互式的,例如编辑器,那么它通常会有某种调用 selectpoll 的事件循环,并且可以监视您的 inotify 文件描述符以获取事件。

通常最好使用 inotify stat,因为您会立即收到通知,并且不会在文件未更改时浪费时间和磁盘 I/O 轮询。缺点是它可能无法在 NFS 或其他网络文件系统上工作,并且不可移植。

This page at IBM Developerworks给出一些示例 C 代码,以及 man page是权威的引用。

关于c - 检测对打开文件的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/468768/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com