Killing a (mex) Function When It Doesn't Respond to Ctrl-C or Ctrl-Break Under WIN64

20 次查看(过去 30 天)
Is there a way to kill a (mex) function running in MATLAB and which doesn't respond to Ctrl-C or CTrl-Break, other than by killing the whole MATLAB process (session)? To be concrete, assume R2014A WIN 64.
Thanks.

采纳的回答

Jan
Jan 2015-6-1
编辑:James Tursa 2017-10-6
No, you have to kill the Matlab process.

更多回答(2 个)

Peter Lawrence
Peter Lawrence 2017-10-6
编辑:Walter Roberson 2017-10-6
Yes, it's part of the "undocumented" matlab stuff, but at least it works, and works well.
and/or
  1 个评论
Mark Stone
Mark Stone 2017-10-6
Nice. This addresses coding of a mex file so that it can be interrupted. However, it does not address the interruptibility of a mex file provided without source code. So if I understand correctly, I would still be out of luck if trying to run a mex file which was not designed to be interrupted and for which I don't have access to source code.

请先登录,再进行评论。


Victor
Victor 2016-6-16

Who accepted that unacceptable answer!?

No but seriously this is sooooooooooooooooooooooooooooooooooooooooo annoying!

  4 个评论
James Tursa
James Tursa 2019-2-8
编辑:James Tursa 2019-2-8
Huh? OP asked about a mex function that specifically does NOT respond to Ctrl-C or the like. He makes that very clear in his response to Peter that he is interested in interrupting compiled mex routines that have no special coding to respond to Ctrl-C. Jan's answer is correct for the question asked.
Peter's response is definitely valuable and related to the question, but it requires recoding and recompiling the mex routine, something the OP specifically points out was not the intent of his original question. Plus, it is not clear to me what would happen in that 2nd link if the MATLAB Memory Manager was interrupted in the middle of something when its Worker Thread got terminated. I haven't inestigated this, but I can easily envision a crash scenario.
Both responses deservedly got reputation points. I don't think there is anything to complain about here ...
Pavel Holoborodko
Pavel Holoborodko 2020-1-23
@"Plus, it is not clear to me what would happen in that 2nd link if the MATLAB Memory Manager was interrupted in the middle of something when its Worker Thread got terminated."
Suggestions to the situation are provided in the post. In short, WorkerThread must be used for computations, not for memory allocations (especially not by MATLAB Memory Manager functions). It is really bad idea to mix allocations & computations in (any) numerical code anyway.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by