Penjelasan terperinci tentang fungsi operasi set isyarat Linux
Mari kita semak dahulu apakah set isyarat yang belum selesai. Apabila isyarat dijana dan sampai ke destinasinya, proses ini dipanggil penghantaran isyarat. Keadaan perantaraan daripada penjanaan isyarat kepada penghantaran dipanggil keadaan menunggu isyarat. Sebab bagi keadaan belum selesai mungkin kerana isyarat disekat, iaitu, bit yang sepadan dalam perkataan topeng isyarat (atau set isyarat disekat) ditetapkan kepada 1. Kedua-dua set isyarat menyekat dan set isyarat belum selesai dikekalkan oleh kernel. Keseluruhan proses ditunjukkan dalam gambar di bawah:

Kadangkala kita perlu menyekat isyarat tertentu, jadi kita perlu mengubah suai set isyarat menyekat. Jadi, bagaimana kita mengubah suai set isyarat menyekat? Satu kaedah yang disediakan oleh sistem ialah kami mula-mula membuat set yang sama dengan set isyarat menyekat, dan kemudian menggunakannya untuk mengubah suai set isyarat menyekat.
Sistem ini menyediakan satu siri fungsi tetapan set isyarat. Fungsi-fungsi ini adalah seperti berikut:
sigset_t set; 信号集数据类型,本质是typedef unsigned long sigset_t; int sigemptyset(sigset_t *set); 将某个信号集清0 int sigfillset(sigset_t *set); 将某个信号集置1 int sigaddset(sigset_t *set, int signum); 将某个信号加入信号集 int sigdelset(sigset_t *set, int signum); 将某个信号清出信号集 以上几个函数返回值均是:成功:0;失败:-1 int sigismember(const sigset_t *set, int signum); 判断某个信号是否在信号集中 返回值:在集合:1;不在:0;出错:-1
Selepas mencipta set isyarat menggunakan fungsi di atas, bagaimana untuk menukar set isyarat menyekat? Sistem ini menyediakan fungsi lain: fungsi sigprocmask. Fungsi sigprocmask boleh digunakan untuk menyekat isyarat atau membuka sekatan Intipatinya ialah menggunakan set isyarat yang kami cipta untuk menukar set isyarat menyekat.
Prototaip fungsi:
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
Nilai pulangan:
Kejayaan: 0; Kegagalan: -1, set errno
Penjelasan parameter:
set: Parameter masuk ialah bitmap Bit mana dalam set ialah 1 menunjukkan isyarat yang disekat oleh proses semasa.
oldset: Parameter keluar, simpan set topeng isyarat lama. Ini agak serupa dengan setimer.
bagaimana nilai parameter:
Anggap bahawa perkataan topeng isyarat semasa ialah topeng
1.SIG_BLOCK: Apabila cara ditetapkan kepada nilai ini, set menunjukkan isyarat yang perlu disekat. Setaraf mask = mask |
2.SIG_UNBLOCK: Apabila cara ditetapkan kepada ini, set menunjukkan isyarat yang perlu dinyahsekat. Setaraf mask = mask & ~set3.SIG_SETMASK: Apabila cara ditetapkan kepada ini, set mewakili set topeng baharu yang digunakan untuk menggantikan topeng asal. Bersamaan dengan mask = set Jika memanggil sigprocmask menyahsekat beberapa isyarat semasa, sekurang-kurangnya satu daripada isyarat akan dihantar sebelum sigprocmask kembali.
Bagaimana kita membaca set isyarat yang belum selesai? Sistem ini menyediakan fungsi signpending.
Prototaip fungsi:
int sigpending(sigset_t *set);
tetapkan parameter keluar.
Nilai pulangan:
Nilai pulangan: Kejayaan: 0; Kegagalan: -1, set errno
Contoh: Cetak status belum selesai semua isyarat biasa ke skrin.
#include #include #include void printPending(sigset_t *set) { int i = 0; for (i = 0; i if (sigismember(set, i) == 1) printf("1"); else printf("0"); } printf("\n"); } int main() { sigset_t set, oldset, pendset; sigemptyset(&set); sigaddset(&set, SIGQUIT); // ctrl + \ 将产生SIGQUIT信号 sigprocmask(SIG_BLOCK, &set, &oldset); while (1) { sigpending(&pendset); printPending(&pendset); // 写一个函数打印未决信号集 sleep(1); } }
Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi operasi set isyarat Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Sebab utama mengapa anda tidak boleh log masuk ke MySQL sebagai akar adalah masalah kebenaran, ralat fail konfigurasi, kata laluan tidak konsisten, masalah fail soket, atau pemintasan firewall. Penyelesaiannya termasuk: periksa sama ada parameter pengikat di dalam fail konfigurasi dikonfigurasi dengan betul. Semak sama ada kebenaran pengguna root telah diubahsuai atau dipadam dan ditetapkan semula. Sahkan bahawa kata laluan adalah tepat, termasuk kes dan aksara khas. Semak tetapan dan laluan kebenaran fail soket. Semak bahawa firewall menyekat sambungan ke pelayan MySQL.

C Language Conditional Compilation adalah mekanisme untuk selektif menyusun blok kod berdasarkan keadaan kompilasi masa. Kaedah pengenalan termasuk: menggunakan arahan #if dan #Else untuk memilih blok kod berdasarkan syarat. Ekspresi bersyarat yang biasa digunakan termasuk STDC, _WIN32 dan LINUX. Kes praktikal: Cetak mesej yang berbeza mengikut sistem operasi. Gunakan jenis data yang berbeza mengikut bilangan digit sistem. Fail header yang berbeza disokong mengikut pengkompil. Penyusunan bersyarat meningkatkan kebolehgunaan dan fleksibiliti kod, menjadikannya boleh disesuaikan dengan pengkompil, sistem operasi, dan perubahan seni bina CPU.

1.0.1 Preface Projek ini (termasuk kod dan komen) telah direkodkan semasa karat saya yang diajar sendiri. Mungkin ada kenyataan yang tidak tepat atau tidak jelas, sila minta maaf. Jika anda mendapat manfaat daripadanya, ia lebih baik. 1.0.2 Mengapa Rustrust boleh dipercayai dan cekap? Karat boleh menggantikan C dan C, dengan prestasi yang sama tetapi keselamatan yang lebih tinggi, dan tidak memerlukan rekompilasi yang kerap untuk memeriksa kesilapan seperti C dan C. Kelebihan utama termasuk: Keselamatan Memori (mencegah penunjuk null dari dereferences, penunjuk menggantung, dan perbalahan data). Thread-safe (pastikan kod multi-threaded selamat sebelum pelaksanaan). Elakkan tingkah laku yang tidak ditentukan (mis., Arus dari batas, pembolehubah yang tidak diinisialisasi, atau akses kepada memori yang dibebaskan). Karat menyediakan ciri bahasa moden seperti generik

Lima komponen asas Linux adalah: 1. Kernel, menguruskan sumber perkakasan; 2. Perpustakaan sistem, menyediakan fungsi dan perkhidmatan; 3. Shell, antara muka pengguna untuk berinteraksi dengan sistem; 4. Sistem fail, menyimpan dan menganjurkan data; 5. Aplikasi, menggunakan sumber sistem untuk melaksanakan fungsi.

Terdapat banyak sebab mengapa permulaan MySQL gagal, dan ia boleh didiagnosis dengan memeriksa log ralat. Penyebab umum termasuk konflik pelabuhan (periksa penghunian pelabuhan dan ubah suai konfigurasi), isu kebenaran (periksa keizinan pengguna yang menjalankan perkhidmatan), ralat fail konfigurasi (periksa tetapan parameter), rasuah direktori data (memulihkan data atau membina semula ruang meja), isu ruang jadual InnoDB (semak fail ibdata1) Apabila menyelesaikan masalah, anda harus menganalisisnya berdasarkan log ralat, cari punca utama masalah, dan mengembangkan tabiat sandaran data secara teratur untuk mencegah dan menyelesaikan masalah.

Penyelesaian kepada ralat pemasangan MySQL adalah: 1. Berhati -hati memeriksa persekitaran sistem untuk memastikan keperluan perpustakaan ketergantungan MySQL dipenuhi. Sistem operasi dan keperluan versi yang berbeza adalah berbeza; 2. Berhati -hati membaca mesej ralat dan mengambil langkah -langkah yang sepadan mengikut arahan (seperti fail perpustakaan yang hilang atau kebenaran yang tidak mencukupi), seperti memasang kebergantungan atau menggunakan arahan sudo; 3 Jika perlu, cuba pasang kod sumber dan periksa dengan teliti log kompilasi, tetapi ini memerlukan pengetahuan dan pengalaman Linux tertentu. Kunci untuk menyelesaikan masalah akhirnya adalah dengan teliti memeriksa persekitaran sistem dan maklumat ralat, dan merujuk kepada dokumen rasmi.

MySQL tidak boleh berjalan secara langsung di Android, tetapi ia boleh dilaksanakan secara tidak langsung dengan menggunakan kaedah berikut: menggunakan pangkalan data ringan SQLite, yang dibina di atas sistem Android, tidak memerlukan pelayan yang berasingan, dan mempunyai penggunaan sumber kecil, yang sangat sesuai untuk aplikasi peranti mudah alih. Sambungkan jauh ke pelayan MySQL dan sambungkan ke pangkalan data MySQL pada pelayan jauh melalui rangkaian untuk membaca dan menulis data, tetapi terdapat kelemahan seperti kebergantungan rangkaian yang kuat, isu keselamatan dan kos pelayan.

Sebab utama kegagalan pemasangan MySQL adalah: 1. Isu kebenaran, anda perlu menjalankan sebagai pentadbir atau menggunakan perintah sudo; 2. Ketergantungan hilang, dan anda perlu memasang pakej pembangunan yang relevan; 3. Konflik pelabuhan, anda perlu menutup program yang menduduki port 3306 atau mengubah suai fail konfigurasi; 4. Pakej pemasangan adalah korup, anda perlu memuat turun dan mengesahkan integriti; 5. Pembolehubah persekitaran dikonfigurasikan dengan salah, dan pembolehubah persekitaran mesti dikonfigurasi dengan betul mengikut sistem operasi. Selesaikan masalah ini dan periksa dengan teliti setiap langkah untuk berjaya memasang MySQL.
