Я только что обнаружил, что такие 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
?