Gnuplot-工作流程“使用 Gnuplot 5.4.x 和 Linux (Xubuntu 22.04) 的 Gnuplot-Console + 编辑器 (Geany) 无法使用 Windows 10 工作。
可以通过“load myscript.gnuplot”加载并运行 Gnuplot 脚本。 但是,当我尝试在“myscript.gnuplot”中进行任何更改时,我无法保存该文件。 Gnuplot 似乎对此文件加了锁。
我从我的德语 Gnuplot 收到以下错误消息: “Fehler beim Speichern der Datei。Fehler beim Umbenennen der temporären Datei:权限被拒绝。 Die Datei ist möglicherweise nicht vollständig auf der Festplatte gespeichert。” 翻译: “保存文件时出错。重命名临时文件时出错:权限被拒绝。 文件可能未完整保存在硬盘上。”
使用较旧的便携式版本的 Gnuplot (5.0.x) 和相同的 Windows 安装,没有锁定,所有事情都按预期工作 - 就像在我的 Linux 中一样;-)。
关闭 Gnuplot-Console 后,可以再次保存脚本(对于两个 Gnuplot 版本)。
为什么 Gnuplot 对于不同版本的行为如此不同? 我是不是错过了什么?
是否可以使用工作流程(Gnuplot + 编辑器)而不用使用 Windows 10 的 Gnuplot 版本 5.4.x 关闭 Gnuplot 控制台?
很明显您已经发现了代码回归 在 Gnuplot 5.4 中相对于 5.0。 建议您向维护者提交错误报告。 这个问题已经是一个很好的错误报告了, 它只是缺少一些细节,例如版本5.4.10 或任何你实际正在运行的东西。 另外,如果你能缩小范围,它会改善错误报告 例如5.3.2 没有表现出该症状,但 5.4.1 却表现出。
值得注意的是,当前版本是 Gnuplot 6.0.1。 您一定应该测试它是否表现出相同的症状。
考虑类 Unix (linux) 操作系统上的进程 A 和 B。 进程A打开一些巨大的numbers.csv文件的版本1并读取 前几行,然后停顿。 进程 B 要么删除该文件,要么等效地 在该文件名之上写入版本 2,可能行数较少。 无论哪种情况,进程 A still 都有一个打开的文件 版本 1 的描述符,并且可以取消暂停并继续 成功读取所有行直到 EOF。 只有当 A 执行
close()
时才会存储版本 1
由文件系统回收。
同时 B,或任何新流程,可以 open("numbers.csv")
并查看版本 2 的图。
现在考虑一对进程 A、B 运行在 任何使用本地本机文件系统的 MS 操作系统,例如 Windows 10。 没有办法支持同时访问两者 电子表格的版本 1 和 2。 因此操作系统强制执行锁定。 只要A在numbers.csv上打开了一个文件描述符, 无论是读还是写,B 都被锁定。 如果 B 尝试 open() 它将收到错误。 如果 B 尝试在 Numbers.csv 之上重命名 readme.txt 它将收到错误。
我们甚至不需要两个进程来重现这种行为。 由同一进程管理的两个不同的文件描述符就足够了。
这就是您使用 Gnuplot 观察到的情况。 显然旧版本没有泄漏文件描述符 一旦他们用完一个文件,他们就会小心地合上它们。 相比之下,您遗憾地报告了 5.4 文件描述符打开时间过长, 影响后续操作。
请编辑您的问题,发布答案,或者至少发表评论, 其中提到了您针对 5.4 提交的错误报告。谢谢。