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