Contact me: hankecnc@gmail.com

轴:读取后文件未关闭 #273

推推 grbl 3年前 (2023-01-29) 335次浏览
关闭
laurivosandi 打开了这个问题 2017 年 5 月 20 日 · 4条评论
关闭

轴:读取后文件未关闭#273

laurivosandi 打开了这个问题 2017 年 5 月 20 日 · 4条评论

注释

轴:读取后文件未关闭 #273

以下是我重现该问题所遵循的步骤:

  1. 使用 Axis 打开文件,在打开的文件上运行 lsof
  2. 打开另一个关闭第一个文件的文件,对先前打开的文件运行 lsof
  3. 轴仍列为使用第一个文件

我意识到对于大型设计来说,直接从文件中读取 G 代码可能是有意义的,但是考虑到现在的计算机资源,至少可以有一个开关来切换行为。

这是我期望发生的事情:

文件在阅读后立即关闭,或者至少在我打开另一个文件时关闭。

这是发生了什么:

文件保持打开状态,导致 CI​​FS 共享文件夹上的文件被锁定。

有关我的硬件和软件的信息:

  • 我正在使用在 Fedora 上编译的最新 Git 修订版,同样的问题出现在 2016 年夏天安装的 LinuxCNC 发行版中。我可以在下次去实验室时检查版本。
轴:读取后文件未关闭 #273
成员
杰普勒 评论了 2017 年 5 月 20 日  

您至少可以通过使用“cat”程序过滤器来防止这些 CIFS 文件被锁定,例如,如果您始终使用“.gcode”扩展名,请找到[FILTER]您的 ini 文件的部分并添加gcode = cat. 这基本上会导致 AXIS 在打开文件之前在 /tmp 中获取该文件的副本。

但是,这也可能会影响“重新加载”的功能,我将不得不查看源代码以进行检查。

注意:这只是一种可能的解决方法,您所描述的仍然听起来像是一个应该修复的错误。

轴:读取后文件未关闭 #273

你好,你说的是哪个ini文件?该文档没有提到文件在哪里……

轴:读取后文件未关闭 #273
成员

~/linuxcnc/configsconfigs在源代码树中。

轴:读取后文件未关闭 #273
作者
劳里沃桑迪 评论了 2017 年 5 月 20 日  

LinuxCNC GUI 启动时,机器配置目录和文件被转储到终端,恰好在这种情况下/home/$USER/linuxcnc/configs/sim/axis/axis.ini,我ngc = cat[FILTER]section 中添加,不再锁定文件。感谢您提供解决方法,顺便说一句,这不会复制到/tmp,它只是使用cat命令读取文件,而 cat 恰好在将输出转储到stdout.

但是,如果没有解决方法,我认为打开另一个文件肯定会关闭以前的文件。它本质上是在泄漏内存和文件句柄,就像现在一样。