gpt4 book ai didi

c++ - 如何检查文件是否仍在写入?

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

如何检查文件是否仍在写入?我需要等待另一个进程再次创建、写入和关闭文件,这样我才能继续并在我的进程中再次打开它。

最佳答案

总的来说,这是一个很难解决的问题。在某些情况下,您可以询问文件是否打开;但是,如果另一个进程是一个脚本,它可能会多次打开和关闭该文件。我强烈建议您使用咨询锁或其他一些显式方法,以便其他进程在处理完文件后进行通信。

就是说,如果这不是一种选择,还有另一种方法。如果您查看 /proc/<pid>/fd目录,其中 <pid>是一些正在运行的进程的数字进程 ID,您会看到一堆指向该进程打开的文件的符号链接(symbolic link)。符号链接(symbolic link)上的权限反射(reflect)文件打开的模式 - 写权限意味着它以写模式打开。

因此,如果您想知道文件是否打开,只需扫描每个进程的 /proc条目,以及其中的每个文件描述符,寻找指向文件的可写符号链接(symbolic link)。如果你知道其他进程的 PID,你也可以直接查看它的 proc 条目。

当然,这有一些主要的缺点。首先,您只能看到您自己进程的打开文件,除非您是根用户。它也相对较慢,并且只能在 Linux 上运行。而且,如果另一个进程多次打开和关闭文件,您就会陷入困境 - 您可能最终会在关闭期间看到它,并且没有简单的方法可以知道它是否会再次打开它。

关于c++ - 如何检查文件是否仍在写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5758631/

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