Když je proces ukončen, shell uloží pouze 8bitový návratový kód, ale nastaví horní bit, pokud byl proces abnormálně ukončen. Ale protože váš proces je ukončen chybou segmentace, obvykle je odeslaný signál SIGSEGV (Neplatná reference paměti), která má hodnotu 11.
Takže protože váš proces byl ukončen abnormálně, máte 128 a pak přidáte hodnotu signálu, který proces ukončil, což byla 11, dostanete 139.
Příslušné systémové volání (udávající stav ukončeného procesu) je waitpid(2). 139 je pro WIFSIGNALED
a WTERMSIG
atd... V Linuxu jsou aktuální bity popsány v interním souboru /usr/include/bits/waitstatus.h
který je součástí <sys/wait.h>
záhlaví
wait
, waitpid
volání je standardní v POSIX, stejně jako názvy maker (jako WTERMSIG
atd...). Vlastní implementace těchto maker a skutečná čísla signálů, tedy kód daný shellem, jsou specifické pro implementaci.
Manuálová stránka signal(7) Linuxu uvádí počet signálů.