


Kaedah dan teknik untuk keluar proses Linux: Cara menamatkan proses dengan anggun
Proses keluar ialah operasi biasa dalam sistem Linux Ia membenarkan proses menamatkan operasinya sendiri, melepaskan sumber yang didudukinya dan kembali ke keadaannya sendiri. Terdapat banyak sebab untuk proses keluar, seperti menyelesaikan tugas seperti biasa, menghadapi ralat, menerima isyarat, dsb. Terdapat banyak cara untuk keluar dari proses, seperti menggunakan exit(), return, _exit(), abort() dan fungsi atau pernyataan lain. Tetapi, adakah anda benar-benar tahu bagaimana untuk keluar dari proses Linux? Adakah anda tahu cara menggunakan dan memilih kaedah keluar proses yang sesuai di bawah Linux? Adakah anda tahu bagaimana untuk menamatkan proses dengan anggun di Linux? Artikel ini akan memperkenalkan anda kepada pengetahuan yang berkaitan tentang proses keluar Linux secara terperinci, supaya anda boleh menggunakan dan memahami operasi biasa ini dengan lebih baik di bawah Linux.
Proses keluar
Keluar daripada proses di bawah Linux dibahagikan kepada dua jenis: keluar biasa dan keluar tidak normal:
1.Keluar seperti biasa
a. Laksanakan pulangan dalam fungsi utama().
b. Panggil fungsi exit()
c. Panggil fungsi _exit()
2.Keluar secara tidak normal
a. Hubungi tentang fungsi
b. Proses menerima isyarat, dan isyarat menyebabkan program ditamatkan.
Tidak kira kaedah keluar yang digunakan, sistem akhirnya akan melaksanakan kod yang sama dalam kernel. Kod ini digunakan untuk menutup deskriptor fail terbuka yang digunakan oleh proses dan melepaskan memori dan sumber lain yang didudukinya.
Perbandingan beberapa kaedah keluar
1 Perbezaan antara keluar dan balik:
keluar ialah fungsi dengan parameter. Selepas keluar dilaksanakan, kawalan diserahkan kepada sistem
return ialah pulangan selepas fungsi dilaksanakan. Selepas pemulangan dilaksanakan, kawalan diserahkan kepada fungsi panggilan.
2 Perbezaan antara keluar dan menggugurkan kandungan:
keluar adalah penamatan biasa proses
tentang adalah penamatan tidak normal.
exit() dan _exit() fungsi
Fungsi keluar dan _keluar kedua-duanya digunakan untuk menamatkan proses. Apabila program melaksanakan exit atau _exit, sistem tanpa syarat menghentikan semua operasi yang tinggal, mengosongkan pelbagai struktur data dan menamatkan proses berjalan.
keluar diisytiharkan dalam fail pengepala stdlib.h, manakala _exit() diisytiharkan dalam fail pengepala unistd.h. Parameter exit_code dalam exit ialah 0, yang bermaksud bahawa proses itu ditamatkan secara normal Jika nilai lain, ini bermakna ralat berlaku semasa pelaksanaan program.
Perbezaan antara exit() dan _exit()
_exit() kembali ke kernel serta-merta selepas pelaksanaan, manakala exit() mula-mula melakukan beberapa operasi pembersihan dan kemudian menyerahkan kawalan kepada kernel.
Apabila fungsi _exit dipanggil, ia akan menutup semua deskriptor fail proses, membersihkan memori dan beberapa fungsi pembersihan kernel lain, tetapi tidak akan menyegarkan aliran (stdin, stdout, stderr...). di atas fungsi _exit Pembalut yang memanggil _exit dan mengepam strim sebelum memanggilnya.
Perbezaan terbesar antara fungsi exit() dan fungsi _exit() ialah fungsi exit() menyemak status terbuka fail dan menulis kandungan penimbal fail kembali ke fail sebelum memanggil sistem keluar. Oleh kerana terdapat operasi yang dipanggil "I/O buffered" dalam perpustakaan fungsi standard Linux, cirinya ialah terdapat penimbal dalam memori yang sepadan dengan setiap fail yang terbuka. Setiap kali fail dibaca, beberapa rekod akan dibaca secara berterusan, supaya pada kali berikutnya fail dibaca, ia boleh dibaca terus dari penimbal memori sama, setiap kali fail ditulis, ia hanya ditulis ke memori penimbal. Apabila syarat tertentu dipenuhi (seperti mencapai nombor tertentu atau menemui aksara tertentu, dsb.), kandungan dalam penimbal ditulis pada fail sekaligus. Teknologi ini sangat meningkatkan kelajuan membaca dan menulis fail, tetapi ia juga membawa sedikit masalah kepada pengaturcaraan. Sebagai contoh, terdapat beberapa data yang dianggap telah ditulis ke fail Sebenarnya, kerana ia tidak memenuhi syarat tertentu, ia hanya disimpan dalam penimbal Pada masa ini, gunakan fungsi _exit() untuk menutup terus proses, dan data dalam penimbal akan hilang. Oleh itu, jika anda ingin memastikan integriti data, anda mesti menggunakan fungsi exit().
Mari kita lihat perbezaan antara mereka melalui contoh fungsi:
Fungsi contoh 1: exit.c
#include #include int main() { printf("using exit----\n"); printf("This is the content in buffer\n"); exit(0); }
Hasil pelaksanaan ialah:
using exit---- This is the content in buffer
Contoh fungsi 2: _exit.c
#include #include int main() { printf("using _exit--\n"); printf("This is the content in buffer"); _exit(0); }
Hasil pelaksanaan ialah:
using _exit--
Fungsi printf menggunakan buffer I/O Fungsi ini membaca rekod secara automatik daripada penimbal apabila menemui aksara baris baharu "n". Oleh itu, exit() keluar selepas menulis data dalam buffer, manakala fungsi _exit() keluar terus.
Anda juga boleh menukar printf("Ini ialah kandungan dalam penimbal"); dalam contoh fungsi 2 kepada printf("Ini ialah kandungan dalam penimbal") (iaitu, tambah n di penghujung printf untuk melihat apa hasilnya adalah. Mengapa ini berlaku?
Urutan berbeza di mana proses ibu bapa dan anak ditamatkan akan menghasilkan hasil yang berbeza
1. Proses ibu bapa tamat sebelum proses anak:Situasi ini adalah proses anak yatim yang kami gunakan sebelum ini. Apabila proses induk keluar dahulu, sistem akan membiarkan proses init mengambil alih proses anak.
2 Proses anak ditamatkan sebelum proses ibu bapa, dan proses ibu bapa tidak memanggil fungsi tunggu
Dalam kes ini, proses kanak-kanak memasuki keadaan zombi dan akan kekal sedemikian sehingga sistem dimulakan semula. Apabila proses anak berada dalam keadaan zombie, kernel hanya menyimpan beberapa maklumat yang diperlukan tentang proses untuk proses induk. Pada masa ini, proses kanak-kanak sentiasa menduduki sumber, dan ia juga mengurangkan bilangan maksimum proses yang boleh dibuat oleh sistem.
Apakah keadaan zombi?
Proses yang telah ditamatkan tetapi proses induknya belum lagi menangani kesannya (mendapatkan maklumat tentang proses anak yang ditamatkan dan melepaskan sumber yang masih didudukinya) dipanggil proses zombi.
3 Proses anak ditamatkan sebelum proses ibu bapa, dan proses ibu bapa memanggil fungsi tunggu
Pada masa ini, proses ibu bapa akan menunggu sehingga proses anak tamat.
Melalui artikel ini, anda seharusnya mempunyai pemahaman yang menyeluruh tentang kaedah keluar proses Linux, dan mengetahui definisi, prinsip, penggunaan, kelebihan dan keburukannya. Anda juga harus memahami sebab dan kesan proses keluar, dan cara menggunakan dan memilih kaedah keluar proses dengan betul di bawah Linux. Kami mengesyorkan bahawa apabila menggunakan sistem Linux, anda menggunakan kaedah keluar proses yang sesuai untuk menamatkan proses untuk meningkatkan kestabilan dan kecekapan sistem. Pada masa yang sama, kami juga mengingatkan anda untuk memberi perhatian kepada beberapa masalah dan cabaran yang berpotensi apabila menggunakan kaedah keluar proses, seperti proses zombi, kebocoran memori, pengendalian isyarat, dsb. Saya harap artikel ini dapat membantu anda menggunakan sistem Linux dengan lebih baik dan membolehkan anda menamatkan proses dengan anggun di bawah Linux.
Atas ialah kandungan terperinci Kaedah dan teknik untuk keluar proses Linux: Cara menamatkan proses dengan anggun. 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



Perbezaan utama antara CentOS dan Ubuntu adalah: asal (CentOS berasal dari Red Hat, untuk perusahaan; Ubuntu berasal dari Debian, untuk individu), pengurusan pakej (CentOS menggunakan yum, yang memberi tumpuan kepada kestabilan; Ubuntu menggunakan APT, untuk kekerapan yang tinggi) Pelbagai tutorial dan dokumen), kegunaan (CentOS berat sebelah ke arah pelayan, Ubuntu sesuai untuk pelayan dan desktop), perbezaan lain termasuk kesederhanaan pemasangan (CentOS adalah nipis)

CentOS telah dihentikan, alternatif termasuk: 1. Rocky Linux (keserasian terbaik); 2. Almalinux (serasi dengan CentOS); 3. Ubuntu Server (Konfigurasi diperlukan); 4. Red Hat Enterprise Linux (versi komersial, lesen berbayar); 5. Oracle Linux (serasi dengan CentOS dan RHEL). Apabila berhijrah, pertimbangan adalah: keserasian, ketersediaan, sokongan, kos, dan sokongan komuniti.

Langkah Pemasangan CentOS: Muat turun Imej ISO dan Burn Bootable Media; boot dan pilih sumber pemasangan; Pilih susun atur bahasa dan papan kekunci; Konfigurasikan rangkaian; memisahkan cakera keras; Tetapkan jam sistem; Buat pengguna root; pilih pakej perisian; Mulakan pemasangan; Mulakan semula dan boot dari cakera keras selepas pemasangan selesai.

Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

Docker menggunakan ciri -ciri kernel Linux untuk menyediakan persekitaran berjalan yang cekap dan terpencil. Prinsip kerjanya adalah seperti berikut: 1. Cermin digunakan sebagai templat baca sahaja, yang mengandungi semua yang anda perlukan untuk menjalankan aplikasi; 2. Sistem Fail Kesatuan (Unionfs) menyusun pelbagai sistem fail, hanya menyimpan perbezaan, menjimatkan ruang dan mempercepatkan; 3. Daemon menguruskan cermin dan bekas, dan pelanggan menggunakannya untuk interaksi; 4. Ruang nama dan cgroups melaksanakan pengasingan kontena dan batasan sumber; 5. Pelbagai mod rangkaian menyokong interkoneksi kontena. Hanya dengan memahami konsep -konsep teras ini, anda boleh menggunakan Docker dengan lebih baik.

Kaedah Melihat Proses Docker: 1. Docker CLI Command: Docker PS; 2. Systemd CLI Command: Sistem Status SistemCTL; 3. Docker mengarang arahan CLI: Docker-Compose PS; 4 Proses Explorer (Windows); 5. /Direktori Proc (Linux).

Keperluan Sistem Kod Vs: Sistem Operasi: Windows 10 dan ke atas, MACOS 10.12 dan ke atas, pemproses pengedaran Linux: minimum 1.6 GHz, disyorkan 2.0 GHz dan ke atas memori: minimum 512 MB, disyorkan 4 GB dan ke atas ruang penyimpanan: minimum 250 mb, disyorkan 1 GB dan di atas keperluan lain:

Langkah Penyelesaian Masalah untuk Gagal Docker Image Build: Semak Sintaks Dockerfile dan Versi Ketergantungan. Semak jika konteks binaan mengandungi kod sumber dan kebergantungan yang diperlukan. Lihat log binaan untuk butiran ralat. Gunakan pilihan sasaran untuk membina fasa hierarki untuk mengenal pasti titik kegagalan. Pastikan anda menggunakan versi terkini Enjin Docker. Bina imej dengan --t [nama imej]: mod debug untuk debug masalah. Semak ruang cakera dan pastikan ia mencukupi. Lumpuhkan Selinux untuk mengelakkan gangguan dengan proses binaan. Tanya platform komuniti untuk mendapatkan bantuan, sediakan dockerfiles dan bina deskripsi log untuk cadangan yang lebih spesifik.
