Завершение работы инициируется командами exit или quit (они эквивалентны). Подобно запуску, Octave имеет процесс завершения работы, который можно настроить с помощью файлов пользовательских сценариев. Во время выключения Octave будет искать файл сценария. finish.m в пути загрузки функции. Здесь могут быть размещены команды для сохранения всех переменных рабочего пространства или очистки временных файлов. Дополнительные функции, выполняемые при завершении работы, могут быть зарегистрированы с помощью atexit .
: выйти ¶ : выйти отменить ¶ : выйти из силы ¶ : выйти («отменить») ¶ : выйти («принудительно») ¶ : выйти ( status ) ¶ : выйти ( status , «принудительно») ¶
Выход из текущей сессии Octave.
Функция exit — это псевдоним для quit .
Если указано необязательное целочисленное значение status , передайте это значение в операционную систему в качестве состояния выхода Octave. Значение по умолчанию равно нулю.
При выходе Октава попытается запустить m-файл. finish.m если он существует. Пользовательские команды для сохранения рабочего пространства или очистки временных файлов могут быть помещены в этот файл. В качестве альтернативы, другой m-файл может быть запланирован для запуска с помощью atexit . Если при выполнении finish.m файла,Octave не завершается,а управление возвращается в командную строку.
Первый опыт Octave Online, делаем регулятор температуры
Если указан необязательный аргумент «cancel» , Octave не завершается, и управление возвращается в командную строку. Эта функция позволяет файлу finish.m отменить процесс выхода.
Если пользователь предпочитает запросить подтверждение перед выходом,Octave отобразит диалоговое окно и предоставит пользователю возможность отменить процесс выхода.
Если указан необязательный аргумент «force» , подтверждение не запрашивается, и выполнение finish.m файл пропускается.
See also:atexit.
: atexit( fcn ) ¶ : atexit( fcn , flag ) ¶
Зарегистрируйте функцию,которая будет вызвана при выходе Октавы.
function last_words () disp («Bye bye»); endfunction atexit («last_words»);
напечатает сообщение «Bye bye» , когда Octave выйдет.
flag дополнительного аргумента зарегистрирует или fcn регистрацию fcn из списка функций, которые будут вызываться при выходе из Octave. Если flag равен true, функция регистрируется, а если flag false, регистрация отменяется. Например, после регистрации функции last_words выше,
atexit («last_words», false);
удалит функцию из списка, и Octave не будет вызывать last_words при выходе.
Обратите внимание, что atexit удаляет только первое вхождение функции из списка, поэтому, если функция была помещена в список несколько раз с помощью atexit , ее также необходимо удалить из списка несколько раз.
See also:quit.
Источник: runebook.dev
Octave. Установка пакетов
Как остановить скрипт, запущенный с запуском в Matlab / GNU Octave?
Есть ли способ остановить скрипт, запущенный с помощью ‘run’ или ‘source’ из Matlab / GNU Octave? Я имею в виду отличное от Ctrl-C, скажем, что данное условие (возможно, заданное глобальными переменными) выполняется и ему посылается сигнал прерывания.
Сценарий haltable.m должен быть остановлен, когда переменная environment принимает значение выше 0,5.
global environment while (true) environment = rand; endwhile
Он запускается с
global environment run (‘haltable.m’)
Где (кроме haltable.m , конечно) можно указать, что он должен останавливаться после выполнения условия?
nightcod3r 18 Янв 2015 в 13:34
Будет ли остановка всегда происходить в одном и том же месте сценария? или быть прерванным, как только возникнет условие «стоп»? Является ли сценарий основным циклом? Отправьте пример кода, пожалуйста (сделайте минимальный рабочий пример, если ваш исходный скрипт слишком длинный).
18 Янв 2015 в 14:21
Как только условие будет выполнено. Я пытался проиллюстрировать это.
nightcod3r
18 Янв 2015 в 15:27
Я все еще не уверен, что понимаю цель этого. Если условие можно проверить внутри цикла, вы можете запрограммировать условие выхода, если нет, в чем проблема с ctrl+C ? (что он делает или не делает не так?)
18 Янв 2015 в 16:22
Я реализую элементарную платформу для программирования Octave. Сценарий программируется учеником, поэтому он не предполагает, что он знает, как определить условие остановки (это должно выполняться извне), а Ctrl-C остановит и скрипт, и платформу.
nightcod3r
18 Янв 2015 в 16:27
Извините, я действительно не знаю, как это сделать в сценарии. Если вы когда-нибудь захотите управлять Ctrl+C при запуске function , я рекомендую вам взглянуть на функцию oncleanup . Это позволит вам перехватить Ctrl+C и запустить некоторый код после (не то, что вы сейчас спрашиваете, а как бы связанного, особенно глядя на один из ваших старых вопросов).
18 Янв 2015 в 16:35
1 ответ
Лучший ответ
Невозможно реализовать такое условие остановки вне сценария, Matlab является однопоточным, и ничего снаружи не выполняется. Возможно, вы ищете условную точку останова.
dbstop in haltable at 5 if (environment>.5)
Вы должны заменить 5 на правильный номер строки. Это не останавливает сценарий, а останавливает его и переключает на отладчик.
Источник: question-it.com
Как остановить скрипт, запущенный с помощью ‘run’ в Matlab/GNU Octave?
Есть ли способ остановить скрипт, запущенный с помощью “run” или “source” из Matlab/GNU Octave? Я имею в виду отличие от Ctrl-C, сказать, что данное условие (возможно, задано глобальными переменными) выполняется, и ему передается сигнал разрыва.
Сценарий haltable.m должен быть остановлен, когда переменная environment принимает значение выше 0,5.
global environment while (true) environment = rand; endwhile
Он запускается с
global environment run (‘haltable.m’)
Где (за пределами haltable.m , конечно) можно было бы указать, что он должен остановиться после выполнения условия?
Лучший ответ:
Невозможно реализовать такое условие остановки за пределами скрипта, matlab является однопоточным и ничего не выполняется. Возможно, условная точка останова – это то, что вы ищете.
dbstop in haltable at 5 if (environment>.5)
Вы должны заменить 5 правильным номером строки. Это не останавливает скрипт, но останавливает его и переключается на отладчик.
Источник: techarks.ru