GNU/Linux >> Belajar Linux >  >> Linux

Kapan harus memeriksa EINTR dan mengulangi pemanggilan fungsi?

Apakah acara aplikasi Anda didorong? (Artinya loop utamanya termasuk select()/epoll_wait() panggilan).

Dalam aplikasi berbasis peristiwa, Anda dapat memblokir semua sinyal dan hanya membuka blokirnya selama pselect()/epoll_pwait() panggilan. Dengan cara ini, sisa kode Anda tidak perlu berurusan dengan EINTR.


Lihat sigaction:http://pubs.opengroup.org/onlinepubs/009695399/functions/sigaction.html

SA_RESTART
  This flag affects the behavior of interruptible functions; that is, those 
  specified to fail with errno set to EINTR. If set, and a function specified 
  as interruptible is interrupted by this signal, the function shall restart 
  and shall not fail with EINTR unless otherwise specified. If the flag is not 
  set, interruptible functions interrupted by this signal shall fail with errno 
  set to EINTR.

Secara default, Anda memiliki perilaku SA_RESTART, jadi Anda tidak perlu khawatir tentang EINTR, jika Anda tidak bermain dengan sinyal.


Linux
  1. Cara memeriksa Versi OS dan Linux

  2. Periksa Pembaruan Windows di Windows Server 2016 dan 2019

  3. Menggunakan skrip Apache2Buddy untuk kinerja dan stabilitas

  1. Cara Membuat dan Memanggil Fungsi di Bash

  2. Cara Memanggil Fungsi C di C++, Fungsi C++ di C (Campuran C dan C++)

  3. memanggil fungsi ketika program selesai dengan ctrl c

  1. Bagaimana cara menerapkan batas waktu dalam panggilan fungsi baca?

  2. Mengapa saya mendapatkan tipe konflik untuk kesalahan getline saat mengkompilasi contoh baris terpanjang di bab 1 K&R2?

  3. Hibernate + MySQL:Cara mengatur pengkodean utf-8 untuk database dan tabel