我刚刚发现这样的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?