GNU/Linux >> Belajar Linux >  >> Linux

Memeriksa apakah errno !=EINTR:apa artinya?

Banyak panggilan sistem akan melaporkan EINTR kode kesalahan jika sinyal terjadi saat panggilan sistem sedang berlangsung. Sebenarnya tidak ada kesalahan yang terjadi, hanya dilaporkan seperti itu karena sistem tidak dapat melanjutkan panggilan sistem secara otomatis. Pola pengkodean ini hanya mencoba ulang panggilan sistem saat ini terjadi, untuk mengabaikan interupsi.

Misalnya, ini mungkin terjadi jika program menggunakan alarm() untuk menjalankan beberapa kode secara asinkron saat penghitung waktu habis. Jika batas waktu terjadi saat program memanggil write() , kami hanya ingin mencoba kembali panggilan sistem (alias baca/tulis, dll).


jawabannya di sini sangat bagus dan saya ingin menambahkan beberapa detail internal :

Panggilan sistem yang terganggu oleh sinyal dapat membatalkan dan mengembalikan EINTR atau secara otomatis restart sendiri jika dan hanya jika SA_RESTART ditentukan dalam sigaction(2)

dan yang bertanggung jawab untuk tugas ini adalah restart_block yang digunakan untuk melacak informasi dan argumen untuk memulai kembali panggilan sistem


Dari halaman manual di write :

Panggilan terputus oleh sinyal sebelum data apa pun ditulis


Linux
  1. Apa Artinya `:-` Dalam Skrip Shell?

  2. Apa Artinya Dalam Keluaran Dari Ps?

  3. Apa Artinya "rm Di-Hash"?

  1. Apa arti peringatan ini?

  2. Apa yang dilakukan panggilan sistem brk()?

  3. Apa arti rc dalam file dot

  1. Apa maksud - dalam perintah linux ini?

  2. Apa artinya membunuh -3?

  3. Apa artinya \b dalam pola grep?