#cygwin #git-bash #msys2 #msys
Вопрос:
У меня есть сценарий, в котором приложение Windows, которое я выполняю в CI, завершается, -1073740791
например, переполнением стека. Один cmd, это, очевидно, может быть поймано с помощью %errorlevel%
, но на bash, по крайней мере, этот код выхода сопоставляется с 127
in $?
.
Очевидно, что bash в Windows не должен нарушать сценарии, поэтому все, что выше или выше 0-255, не подходит.
Вопрос в следующем: Существуют ли какие-либо специальные переменные или механизм непосредственно в самом git-bash, чтобы уловить это фактическое значение ? В этом случае исполняемый файл — это testsuite (подумайте о Google benchmark или google test), и код выхода 127-команда не найдена вообще не помогает.
Комментарии:
1. Изобретатели Windows в своей бесконечной мудрости решили, что кодом выхода процесса может быть любое 32-разрядное число. Cygwin, который смоделирован по образцу Linux (соответственно POSIX), код выхода представляет собой 8-разрядное число, и даже в этом случае коды состояния 127 и выше используются для конкретных целей (сбой при запуске программы и т. Д.). Это означает, что у вас фактически доступно только 7 бит. Вы можете написать пакетный сценарий-оболочку, который записывает длинный код выхода в файл, и ваш сценарий bash оценит этот файл.