Matlab: можно ли создавать обработчики сигналов (скрипты .m)

Я просмотрел документацию и т. Д., Но я не вижу ничего очевидного. Я хотел бы иметь обработчик сигналов, который может перехватывать ^C, ^\ или какое-либо другое нажатие клавиши, которое можно было бы использовать для прерывания долго выполняющегося скрипта (каждое дискретное вычисление обычно составляет ‹1 с) и позволить ему изящно выйти и сохранить текущее состояние .

У Matlab есть обработчики событий для COM, но только для Windows, и я нахожусь в среде * nix.

Если ответ «не повезло», я не против... Я просто пока не вижу ничего, что говорило бы о том, что я SOL.


person Brian Vandenberg    schedule 06.05.2011    source источник


Ответы (1)


MATLAB уже интерпретирует ^C как прерывание. Вы можете использовать объекты onCleanup, чтобы убедиться, что состояние вашей программы сохраняется правильно. т.е. что-то вроде:

function testFcn
x = onCleanup( @() disp('perform cleanup here...') );
for ii=1:1000, disp(ii), pause(1), end

Запустите вышеуказанное и нажмите ^C, когда вам станет скучно. Очевидно, что вы можете подключить любой дескриптор функции к вашему объекту onCleanup. См. также справочную страницу по onCleanup.

person Edric    schedule 06.05.2011