Есть ли способ захватить определенные коды выхода Windows в git-bash?

#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 оценит этот файл.