GNU/Linux >> Linux Esercitazione >  >> Linux

Quale codice di errore restituisce un processo che restituisce i segfault?

Quando un processo viene terminato, la shell memorizza solo un codice di ritorno a 8 bit, ma imposta il bit alto se il processo è stato terminato in modo anomalo. Ma poiché il tuo processo è terminato da un errore di segmentazione, di solito il segnale che viene inviato è SIGSEGV (riferimento di memoria non valido) che ha un valore di 11.

Quindi, poiché il tuo processo è stato terminato in modo anomalo, hai un 128 e poi aggiungi il valore del segnale che ha terminato il processo che era 11, ottieni 139.


La chiamata di sistema pertinente (che fornisce lo stato di un processo terminato) è waitpid(2). Il 139 sta per WIFSIGNALED e WTERMSIG ecc... Su Linux i bit effettivi sono descritti nel file interno /usr/include/bits/waitstatus.h che è incluso da <sys/wait.h> intestazione

Il wait , waitpid call è standard in POSIX, così come i nomi delle macro (come WTERMSIG eccetera...). L'implementazione effettiva di queste macro e i numeri di segnale effettivi, quindi il codice fornito dalla shell, sono specifici dell'implementazione.

La pagina man di signal(7) Linux fornisce il numero dei segnali.


Linux
  1. Cosa fa "lc_all=c"?

  2. Cosa significa __init nel codice del kernel di Linux?

  3. Cosa significa &alla fine di un comando Linux?

  4. Cosa succede se [[ $? -ne 0 ]]; significa in .ksh

  5. quali processi killer ha Linux?

Cosa succede se "uccidi -9" non funziona?

Codice di uscita predefinito al termine del processo?

Cosa fa ?

Cosa indica questa statistica del processo?

Cosa fa Eco $? Fare??

Qual è la tabella dei processi Linux? In cosa consiste?