我刚刚发现这样的MathLink
函数LinkWrite
和LinkRead
有类似它自己的内部的东西CheckAbort
,可以吸收任何中止,并且不会进一步传播它们。
这可以通过以下方式轻松显示LinkRead
:
link = LinkLaunch[First[$CommandLine] <> " -mathlink"];
LinkRead[link];
LinkWrite[link, Unevaluated[Pause[10]]];
{LinkRead[link], Print["!!"]}
评估上述代码后按Alt+ .,您将获得以下输出:
During evaluation of In[6]:= !!
Out[9]= {ReturnPacket[$Aborted], Null}
如您所见,中止被LinkRead
.
我的问题是它打破了我自己基于CheckAbort
.
有没有办法拦截被 和 等函数吸收的LinkRead
中止LinkWrite
?