GNU/Linux >> Znalost Linux >  >> Linux

Jaký chybový kód vrací proces, který segfaults?

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ů.


Linux
  1. Co znamená __init v kódu jádra Linuxu?

  2. Co znamená &na konci linuxového příkazu?

  3. jaké zabijáky procesů má linux?

  1. Co když ‚kill -9‘ nefunguje?

  2. Výchozí kód ukončení při ukončení procesu?

  3. Může mít proces vlastníka? Co to znamená?

  1. Co znamená ve výstupu Ps?

  2. Co dělá Echo $? Dělat??

  3. „e:Dílčí proces /usr/bin/dpkg vrátil kód chyby (1) “ Co to znamená?