2011-01-09 72 views
3


我有一个写入文件的函数,如何使用另一个脚本检查文件是用于写入还是已关闭?如何知道文件是否仍然可以写入

编辑:这个文件可能被其他脚本/应用/系统写打开......

谢谢。

+0

看看flock示例:http://www.tuxradar.com/practicalphp/8/11/0 – 2011-01-09 16:01:42

回答

2

您应该在两个脚本中使用flock。这会在文件上放置一个标志,以便通知其他脚本文件正在使用中。该标志有意使用fclose或在脚本末尾隐式关闭。

+0

虽然flock是答案(或`dio_fcntl`),flock只提供一个*咨询*锁定。你必须在任何地方与羊群协调**。任何其他不使用flock的脚本都可以随时操作该文件。 – jasonbar 2011-01-09 16:06:18

+0

@jasonbar因此通过“在两个脚本”。在您的第一条评论之后,我已经更新了我的答案,以反映您的出色观点。 – lonesomeday 2011-01-09 16:07:06

-3

我想说的只是使用文件打开功能,如果它返回false,那么文件显然仍然是打开的。

+2

您可以根据需要随意调用同一文件中的fopen()多次, 。 – jasonbar 2011-01-09 16:06:58

1

如果您使用的是Unix,您的系统可能安装了lsof(“LiSt打开文件”)命令。 输出中的“FD”列指示文件是打开读取, 写入,还是两者都打开。

我想指出,任何形式的“检查,看看文件X是否开放的写作过程,如果是这样做......”的过程是受竞争条件。一些其他进程 可能会在检查完成后,但在操作开始之前打开文件。

相关问题