我如何以编程方式区分交互式和批处理过程?

时间:2014-08-12 17:49:45

标签: matlab

我有一些脚本需要在桌面(Windows 7)计算机的后台运行。我明白要做到这一点,我需要用以下命令启动MATLAB:

matlab -nosplash -noFigureWindows -r "myScriptName"

我也明白为了让它干净利落,我需要在我的脚本末尾包含一个exit命令。

有没有办法可以稳健地确定脚本是在后台进程中运行还是以交互方式运行?我想避免在交互过程中无意中运行脚本并意外杀死我的MATLAB会话的情况。

if ~RunningInInteractiveMode
    exit
end

我可以用~RunningInInteractiveMode代替函数或其他布尔测试吗?我看了these methods,但是Windows没有-noDesktop选项,所以总会打开一个命令窗口(辅助问题:可以在后台完全在windows中运行MATLAB而不打开完整的命令窗口?)。如果重要的话,我正在运行r2014a。

3 个答案:

答案 0 :(得分:4)

您可以使用参数运行脚本:

matlab -nosplash -noFigureWindows -r "background=true;myscript"

在剧本结尾处这样:

if exist background
    exit
end

答案 1 :(得分:1)

使用feature('ShowFigureWindows')检查是否使用-noFigureWindowsusejava('jvm')检测JRE是否可用。

background_task=~feature('ShowFigureWindows')||~usejava('jvm')

答案 2 :(得分:0)

您无需将exit添加到脚本中,可以将其添加到命令行中:

matlab -nosplash -noFigureWindows -r "myScriptName;exit"