プロセスの終了コード取得(on Shell)

Windowsの場合、errorlevel環境変数で取得する。

>type con > exit_code.c
int main(void)
{
        return 11519;
}
[Ctrl+C]

>cl exit_code.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

exit_code.c
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:exit_code.exe
exit_code.obj

>exit_code.exe
>echo %errorlevel%
11519


Linuxの場合、変数名はシェル依存で、sh/bashなら$?シェル変数で取得できる*1。ただしunsinged char型に変換される。

$ cat > exit_code.c 
int main(void)
{
	return 11519;
}
$ gcc exit_code.c 
$ ./a.out 
$ echo $?
255

うえ、使えない。

*1:csh/tcshなら$status。