【问题标题】:calling executable from matlab function, crash handling从 matlab 函数调用可执行文件,崩溃处理
【发布时间】:2011-06-24 19:31:01
【问题描述】:

我有一个可执行文件oo.exe,输入为12,所以在命令提示符下,我可以写

oo 1
oo 2

我还进行重定向以将输出打印到文本文件。

我正在使用 MATLAB 中的 system 命令做同样的事情。

system('oo 1 >> op.txt');
system('oo 1 >> op.txt');

除了 .exe 崩溃之外,一切正常。当 *.exe 因第一行而崩溃时,我希望文本将被打印到op.txt 中的崩溃点,并且第二行(参数2)将正常执行(假设参数2 没有崩溃) . 但是这不会发生,即使第二行正常执行,也不会打印任何内容。

但是,如果我在两个连续命令中从命令提示符处执行相同操作,则一切正常。我尝试通过编写批处理文件 test.bat 并使用 system 从 MATLAB 调用它来进行欺骗,但无济于事。 实际上,当我从命令提示符运行此 bat 文件时,在第二次执行时,出现了一条消息,指出文件 op.txt 已锁定。

只是告诉你,这一切只有在崩溃时才会发生。

有人有什么建议吗?

【问题讨论】:

  • 我尝试直接从窗口命令提示符调用 test.bat,我遇到了同样的问题。虽然我无法解决问题,但似乎问题与缓冲区有关,缓冲区会以某种方式损坏,或者当程序因崩溃而退出时,无论缓冲区是否为空,它都会清除缓冲区。

标签: matlab crash


【解决方案1】:

在系统调用周围放置一个try catch。似乎它可能会引发错误,从而导致脚本崩溃。

try
system('oo 1 >> op.txt');
catch
end

try
system('oo 2 >> op.txt');
catch
end

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2016-09-09
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多