gpt4 book ai didi

c - 如何从 Matlab C API 调用 engClose() 并等待其进程关闭?

转载 作者:太空宇宙 更新时间:2023-11-03 20:32:01 26 4
gpt4 key购买 nike

我正在使用 MATLAB C API运行一些脚本并生成一些 Simulink 模型。问题是,当我用 MATLAB 完成工作时,我调用:

engClose(instance);

关闭 MATLAB 引擎。但是似乎在调用engClose方法后,MATLAB仍然对生成的文件具有独占访问权限,我无法在调用此方法后使用这些文件。使用此方法后 sleep 2-3 秒,即可解决所有问题。

我检查了engClose 文档here .该文档描述了:

This routine sends a quit command to the MATLAB engine session and closes the connection.

这个描述是否意味着engClose方法不等待MATLAB进程关闭?如果是,有没有其他方法等待MATLAB完全关闭?

更新 1: 我的应用程序是用 C++11 开发的,但是这个 MATLAB 互操作性部分很久以前就用 C 和 MATLAB C API 编写了。应用程序的目标平台是 Windows 和 Linux。

最佳答案

经过几天的调查,我发现并没有同步关闭 Matlab 的标准方法。但是您可以做的是尝试关闭所有:

  1. 打开文件(调用fclose all关闭所有打开的文件)
  2. 类和函数(分别调用clear classesclear functions。您可以调用clear all来清除所有内容。)

在调用 engClose 之前。

此外,请确保为添加到 Matlab 搜索路径的每个路径调用 rmpath(...)

如果在调用其 engClose 方法之前正确清理 Matlab 进程,则调用异步 Matlab engClose 就可以了。

关于c - 如何从 Matlab C API 调用 engClose() 并等待其进程关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57914179/

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