Свойство определяет коды выхода,которые программа может вернуть.
Constructors
указывает на успешное завершение;
указывает на сбой программы с кодом выхода.Точная интерпретация кода зависит от операционной системы.В частности,некоторые значения могут быть запрещены (например,0 на POSIX-совместимой системе).
Instances
Подробности
EqExitCode |
Конкретные детали |
Methods
Methods
Methods
Methods
Связанные типы
Methods
Methods
exitWith code throws ExitCode code . Normally this terminates the program, returning code to the program’s caller. —> Исчисление exitWith code бросает ExitCode code . Обычно это завершает программу, возвращая code вызывающей программе.
Handle s stdout and stderr are flushed automatically; any other buffered Handle s need to be flushed manually, otherwise the buffered data will be discarded. —> По окончанию программы, стандартный Handle сек stdout и stderr сбрасываются автоматически; любые другие буферизованные Handle необходимо очищать вручную, иначе буферизованные данные будут отброшены.
Я знаю то,что ничего не знаю / КОДЫ выхода с программы заболевания АСТМЫ #Навейя
exitFailure . A program that terminates successfully without calling exitWith explicitly is treated as if it had called exitWith ExitSuccess . —> Программа, которая терпит неудачу каким-либо другим образом, рассматривается как если бы она вызвала exitFailure . Программа, которая успешно завершается без явного вызова exitWith , обрабатывается так, как если бы она вызвала exitWith ExitSuccess .
ExitCode is not an IOError , exitWith bypasses the error handling in the IO monad and cannot be intercepted by catch from the Prelude. However it is a SomeException , and can be caught using the functions of Control.Exception. This means that cleanup computations added with bracket (from Control.Exception) are also executed properly on exitWith . —> В качестве ExitCode не является IOError , exitWith обходит обработку в ошибке IO монада и не может быть перехвачено catch из Prelude . Однако это SomeException , и его можно перехватить с помощью функций Control.Exception . Это означает, что вычисления очистки, добавленные с помощью bracket (из Control.Exception ), также выполняются правильно при exitWith .
exitWith should be called from the main program thread in order to exit the process. When called from another thread, exitWith will throw an ExitException as normal, but the exception will not cause the process itself to exit. —> Note: in GHC, exitWith should be called from the main program thread in order to exit the process. When called from another thread, exitWith will throw an ExitException as normal, but the exception will not cause the process itself to exit.
exitFailure is equivalent to exitWith ( ExitFailure exitfail ) , where exitfail is implementation-dependent. —> Вычисление exitFailure эквивалентно exitWith ( ExitFailure exitfail ) , где exitfail зависит от реализации.
Хочешь ВЫЙТИ ИЗ СИСТЕМЫ ? 12 простых ШАГОВ чтобы выйти из МАТРИЦЫ изменить МИР и улучшить СВОЮ ЖИЗНЬ
exitSuccess is equivalent to exitWith ExitSuccess , It terminates the program successfully. —> Вычисление exitSuccess эквивалентно exitWith ExitSuccess , оно успешно завершает программу.
stderr and terminate with exitFailure . —> Запишите данное сообщение об ошибке в stderr и завершите с помощью exitFailure .
Источник: runebook.dev
Как выйти из скрипта Perl?
Пока что все скрипты, приводимые в нашем Учебнике Perl заканчивались, когда по ходу выполнения программа достигала последней строчки в файле.
Однако в некоторых случаях может понадобиться остановить выполнение раньше.
Например, вы спрашиваете пользователя о его возрасте, и если он младше 13, останавливаете скрипт.
use strict; use warnings; use 5.010; print «Каков ваш возраст? «; my $age = ; if ($age < 13) < print «Вы слишком молодыn»; exit; >print «Сделаем что-то. n»;
Обычный вызов exit .
Код выхода
Если вы пользуетесь командной оболочкой Unix/Linux, то вы, должно быть, знаете, что каждая программа при выходе передает код выхода, который можно узнать из переменной $? . Вы тоже можете передать такой код выхода из perl-скрипта, указав параметр при вызове exit() .
use strict; use warnings; use 5.010; exit 42;
В этом примере мы установили код выхода 42. (По умолчанию устанавливается 0)
Успех или отказ?
В Perl обычно 0 или undef означает отказ, а какое-нибудь истинное значение означает успех.
В мире командной оболочки Unix/Linux, 0 означает успех, а другие числа означают отказ. Как правило, для каждого приложения существует свой набор значений, каждое из которых означает какую-то ошибку.
Проверка кода выхода в Linux
На Unix/Linux обычно запускают скрипт через perl script.pl , и потом можно проверить код выхода через echo $? .
Проверка кода выхода в Perl
Если вам приходится запускать один скрипт perl из другого, например через вызов функции system, код выхода этой «другой программы» попадет в переменную Perl’а $? .
Если вы сохраните код из примера выше в файл script.pl, и создадите другой файл «executor.pl» с таким кодом:
use strict; use warnings; use 5.010; say system «perl script.pl»; say $?; say $? >> 8;
То вывод будет таким:
10752 10752 42
Вызов system вернет код выхода, и он же будет записан в переменную Perl’а $? . Здесь важно упомянуть, что это значение состоит из двух байт, и собственно код выхода записан в верхнем байте. Так что, чтобы получить наше 42, нужно сдвинуть биты полученной переменной вправо на 8, использовав побитовый оператор >> . Это мы и видим в последней строке примера.
Переводчик
Vladimir Zatoloka
If you have any comments or questions, feel free to post them on the source of this page in GitHub. Source on GitHub. Comment on this post
Источник: ru.perlmaven.com
Код выхода из программы
← →
SerVS — S ( 2002-04-05 16:43 ) [0]
Если кто знает подскажите как реализовать сабж. В с++ достаточно сделать в WinMain нечто вроде return 5, а что нужно сделать в Дельфи я не могу понять. Если кто знает, плиз помогите
← →
Song ( 2002-04-05 16:53 ) [1]
var ExitCode: Integer = 0;
The ExitCode variable contains the application»s exit code. An exit procedure can learn the cause of termination by examining ExitCode. If the program terminates normally, ExitCode is zero. If the program terminates due to a call to Halt, ExitCode contains the value passed to Halt. If the program terminates due to a run-time error, ExitCode contains the error code.
Setting the ExitCode variable to a value other than 0 in the initialization section of a unit will make loading of a DLL fail (DllMain will return False). You can also set ExitCode in code called from DllProc or DllProcEx to signal failure of loading.
← →
SerVS — S ( 2002-04-05 17:20 ) [2]
Спасибо огромное. В момент запуска происходит очень много инициализаций, если произошла ошибка то нужно завершить приложение с соответствующим кодом (планируется в 95% случаев запускать его из другой проги). Делать halt нельзя, поэтому я использовал PostMessage. Song если в вас есть лучшие идеи подскажите, пожалуйста.
← →
Song ( 2002-04-05 17:44 ) [3]
Это что рассматривать как «момент запуска». Если Вы имеете ввиду до того, как выполнится Application.Run т.е. например onCreate форм, то PostMessage не получится т.к. фактически обработчик сообщений для Вашего приложения не работает, и программа закроется только после Run. В этом случае только Halt (только корректно выгрузите все возможно созданные объекты) или Application.Terminate. А если «момент запуска» это что-то наподобие onShow или onActivate то можно послать сообщение WM_CLOSE или WM_QUIT.
В принципе, я уверен, ничего нового я Вам не посоветовал. :))
← →
SerVS — S ( 2002-04-05 17:58 ) [4]
Правильно «момент запуска» это onCreate на главной форме. Если сделать halt то проложение его просто игнорирует и остается подвисщим в памяти (видимых форм нет). А если после WM_CLOSE с помощь PostMessage винда ставит его в очередь и, действительно, передает его приложению после Run. (Главное оно не остается висеть в памяти). Я не совсем уверен ExitCode после завершения по WM_QUIT будет ноль, или то что я туда установлю?
Источник: delphimaster.net