GNU/Linux >> Belajar Linux >  >> Linux

Kode kesalahan apa yang dikembalikan oleh proses yang segfault?

Saat proses dihentikan, shell hanya menyimpan kode pengembalian 8-bit, tetapi menetapkan bit tinggi jika proses dihentikan secara tidak normal. Namun karena proses Anda terhenti oleh kesalahan segmentasi, biasanya sinyal yang dikirimkan adalah SIGSEGV(Invalid memory reference) yang memiliki nilai 11.

Jadi karena proses Anda dihentikan secara tidak normal, Anda memiliki 128 dan kemudian Anda menambahkan nilai sinyal yang menghentikan proses tersebut yaitu 11, Anda mendapatkan 139.


Syscall yang relevan (memberikan status proses yang dihentikan) adalah waitpid(2). 139 adalah untuk WIFSIGNALED dan WTERMSIG dll... Di Linux, bit sebenarnya dijelaskan dalam file internal /usr/include/bits/waitstatus.h yang disertakan dari <sys/wait.h> tajuk

wait , waitpid panggilan adalah standar di POSIX dan begitu juga nama makro (seperti WTERMSIG dll...). Implementasi sebenarnya dari makro ini, dan nomor sinyal sebenarnya, karenanya kode yang diberikan oleh shell, spesifik untuk implementasi.

Halaman manual signal(7) Linux memberikan jumlah sinyal.


Linux
  1. Apa yang Digema $? Mengerjakan??

  2. “e:Sub-proses /usr/bin/dpkg Mengembalikan Kode Kesalahan (1) ” Apa Artinya?

  3. Apa yang Dikembalikan Perintah Ls -al .*?

  1. Apa yang dikembalikan malloc(0)?

  2. Apa artinya mengatakan kernel linux bersifat preemptive?

  3. Apa :-!! dalam kode C?

  1. Bagaimana Jika 'kill -9' Tidak Berfungsi?

  2. Bagaimana jika [[ $? -ne 0 ]]; berarti dalam .ksh

  3. Bisakah suatu proses memiliki pemilik? Apa artinya?