GNU/Linux >> Belajar Linux >  >> Linux

Linux C:setelah menerima sinyal, apakah mungkin mengetahui PID pengirim?

Ya. Daftarkan penangan sinyal Anda menggunakan sigaction dengan SA_SIGINFO bendera, mengisi sa_sigaction bidang. Sekarang fungsi penangan Anda mengambil siginfo_t* parameter, yang menyertakan bidang si_pid .

Perhatikan bahwa si_pid hanya diatur dalam keadaan tertentu. Dalam kasus Anda, Anda ingin memeriksa bahwa memeriksa si_code disetel ke SI_USER atau SI_QUEUE . Baca man 2 sigaction untuk lebih.


Ya, jika Anda menggunakan sigaction() panggilan untuk menyiapkan penangan sinyal Anda alih-alih signal . Dengan melakukannya, Anda dapat menyiapkan penangan sinyal yang menggunakan tiga parameter:

  • Sebuah int , untuk nomor sinyal (seperti signal )
  • A siginfo_t * , yang merupakan struktur yang berisi semua jenis informasi tentang sumber sinyal, termasuk pid pengirim jika berlaku. (Ini juga mencakup beberapa informasi tentang penyebab sinyal untuk sinyal otomatis seperti SIGSEGV .)
  • A ucontext_t * , yang berkaitan dengan utas mana yang mendapat sinyal. Sebagian besar diabaikan.

Linux
  1. Membedah perintah gratis:Apa yang perlu diketahui oleh sysadmin Linux

  2. 7 namespace Linux yang paling banyak digunakan

  3. Ny Cara Mengetahui Ukuran Cache L1, L2, L3 Dan Ram Di Linux?

  1. 30 hal yang tidak Anda ketahui tentang kernel Linux

  2. Antrian sinyal di C

  3. Apakah mungkin mem-boot kernel Linux tanpa membuat gambar initrd?

  1. Apakah mungkin menginstal font Helvetica di linux?

  2. Apa implementasi Linux sekecil mungkin?

  3. Apakah mungkin untuk me-reboot OS Linux tanpa me-reboot perangkat keras?