Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 正在读取不断增长的共享文件:内容显然没有更新,只有元数据_File_Size_Shared - Fatal编程技术网

File 正在读取不断增长的共享文件:内容显然没有更新,只有元数据

File 正在读取不断增长的共享文件:内容显然没有更新,只有元数据,file,size,shared,File,Size,Shared,所以我碰巧在这个项目中工作,在这个项目中,一个带有测量卡的Linux服务器可以运行一个进程,在这个进程中,测量的数据会不断地添加到一个文件中。该目录通过网络中的SMB2(samba)共享。Windows 7 PC必须至少每0.5秒读取一次不断增长的文件,并从数据中获取最新的样本 我需要文件大小来获取一些样本,因为数据被格式化为具有恒定长度的某种块,从一开始就计数 这是一个MATLAB项目,但Python中也会出现以下问题(在Windows机器上!): 所以我打开文件,试图结束文件并告诉获取文件大

所以我碰巧在这个项目中工作,在这个项目中,一个带有测量卡的Linux服务器可以运行一个进程,在这个进程中,测量的数据会不断地添加到一个文件中。该目录通过网络中的SMB2(samba)共享。Windows 7 PC必须至少每0.5秒读取一次不断增长的文件,并从数据中获取最新的样本

我需要文件大小来获取一些样本,因为数据被格式化为具有恒定长度的某种块,从一开始就计数

这是一个MATLAB项目,但Python中也会出现以下问题(在Windows机器上!):

所以我打开文件,试图结束文件并告诉获取文件大小,根据文件大小读取数据,然后关闭访问。每0.5秒重复一次。但是,当数据写入文件时,这个文件大小始终是第一次访问时的值,因此我总是得到相同的样本数据

现在,我可以使用dir(MATLAB)或os.stats(Python)获得正确且最新的文件大小,但当我在该位置附近搜索并读取时,只返回空数据

请注意,我已经发现如何使用特殊注册表项禁用Windows中SMB的缓存,这有助于获取当前的实际文件大小,但使用tell的大小仍然没有更新

所以我猜文件内容本身存储在服务器上,直到它停止写入文件为止,但是文件大小的元信息似乎被传输了。当我在服务器上运行Python脚本时,顺便说一句,我得到了当前的示例,没有任何问题


我知道这是糟糕的数据交换,并且已经计划改变它(长期)。但是从短期来看,我如何解决这个问题呢?

既然您已经打开了文件,那么
GetFileSize()
返回的文件大小是多少?看我从未做过任何C++…我不知道如何实现这些代码片段。但是谢谢,我可以试一试。无论如何,由于问题似乎与samba有关,是否有任何参数可能导致这种行为?有很多(testparm-v-s),我已经用“cache”对它们进行了greed,并查看了手册页,但很难判断它们是否导致了问题。既然您已经打开了文件,那么
GetFileSize()
返回的文件大小是多少?看我从未做过任何C++…我不知道如何实现这些代码片段。但是谢谢,我可以试一试。无论如何,由于问题似乎与samba有关,是否有任何参数可能导致这种行为?有很多(testparm-v-s),我已经用“cache”对它们进行了greed,并查看了手册页,但是很难判断它们是否导致了这个问题。