id en en tr wuu en en en tr wuu id id id id ms ms ms id ms ms id id de id id en en id hbs_lat en en id hbs_lat id sv id eu id ms id en en id id en en ms id en en ms en en ms id en tr id id ms id id id en id id id id id en id ms id id id id id id tr en ms id id en sv tr wuu tl en en
Deskriptor fail adalah nombor yang unik mengenal pasti fail terbuka dalam sistem pengendalian komputer. Ia menerangkan sumber data, dan bagaimana sumber itu dapat diakses.
Apabila program meminta untuk membuka fail atau sumber data lain, seperti soket rangkaian - kernel sistem operasi memberikan akses, membuat entri dalam jadual fail global, dan menyediakan perisian dengan lokasi entri itu.
Deskriptor dikenal pasti oleh integer bukan negatif yang unik, seperti 0, 12, atau 567 . Sekurang-kurangnya satu deskriptor fail wujud untuk setiap fail terbuka pada sistem.
Deskriptor fail pertama kali digunakan dalam Unix, dan digunakan oleh sistem operasi moden termasuk Linux, macOS X, dan BSD. Di Microsoft Windows, deskriptor fail dikenali sebagai pemegang fail.
Apabila proses membuat permintaan yang berjaya untuk membuka fail, kernel mengembalikan deskriptor fail yang menunjukkan entri dalam jadual fail global kernel. Entri jadual fail mengandungi maklumat seperti inode fail, offset byte, dan sekatan akses untuk aliran data tersebut (baca-baca, tulis sahaja, dsb.).
Pada sistem operasi seperti Unix, tiga deskriptor fail pertama, secara lalai, adalah STDIN (input standard), STDOUT (output standard), dan STDERR (ralat standard).
Aliran data lalai untuk input, contohnya dalam peralihan arahan. Dalam terminal, ini lalai ke input papan kekunci dari pengguna.
Aliran data lalai untuk output, contohnya apabila arahan mencetak teks. Di terminal, ini lalai ke skrin pengguna.
Aliran data lalai untuk keluaran yang berkaitan dengan ralat yang berlaku. Di terminal, ini lalai ke skrin pengguna.
Deskriptor fail boleh diakses secara langsung menggunakan bash, shell lalai Linux, macOS X, dan Windows Subsystem untuk Linux.
Contohnya, apabila anda menggunakan perintah cari, output berjaya pergi ke stdout (deskriptor fail 1 ), dan mesej ralat pergi ke stderr (deskriptor fail 2 ). Kedua-dua aliran dipaparkan sebagai output terminal:
cari / -name '* something *'
/ usr / share / doc / something / usr / share / doc / something / examples / find something_random: `/ run / udisks2 ': Permission denied find:` / run / wpa_supplicant': Permission denied / usr / share / something / usr / permainan / sesuatu
Kami mendapat ralat kerana mencari cuba mencari beberapa direktori sistem yang kami tidak mempunyai kebenaran untuk membaca. Semua baris yang mengatakan "Kebenaran dinafikan" telah ditulis untuk stderr, dan baris lain ditulis untuk stdout .
Anda boleh menyembunyikan stderr dengan mengarahkan deskriptor file 2 ke / dev / null, peranti khas di Linux yang "tidak pergi ke mana-mana":
cari / -name '* something *' 2> / dev / null
/ usr / share / doc / something / usr / share / doc / something / examples / something_random / usr / share / something / usr / games / something
Kesalahan telah dihantar ke / dev / null, dan tidak dipaparkan.
Memahami perbezaan antara stdout dan stderr adalah penting apabila anda mahu bekerja dengan output program. Contohnya, jika anda mencuba keluaran arahan mencari, anda akan melihat bahawa mesej ralat tidak ditapis, kerana hanya output standard yang disalurkan ke grep .
cari / -name '* something *' | grep 'something'
/ usr / share / doc / something / usr / share / doc / something / examples / find something_random: `/ run / udisks2 ': Permission denied find:` / run / wpa_supplicant': Permission denied / usr / share / something / usr / permainan / sesuatu
Walau bagaimanapun, anda boleh mengalihkan ralat standard kepada output standard, dan kemudian grep akan memproses teks kedua-duanya:
cari / -name '* something *' 2> & 1 | grep 'something'
/ usr / share / doc / something / usr / share / doc / something / examples / something_random / usr / share / something / usr / games / something
Perhatikan bahawa dalam arahan di atas, descriptor fail sasaran ( 1 ) diawali dengan ampersand (" & "). Untuk mendapatkan maklumat lanjut mengenai pengalihan aliran data, lihat saluran paip di shell bash.
Untuk contoh membuat dan menggunakan deskriptor fail dalam bash, lihat contoh arahan executin kami.
Pemegang fail, istilah Sistem Operasi
Bolehkah seorang pemproses AMD dan Intel bekerjasama?
Apakah itu DVR (Perakam Video Digital)?
Cara membuat, mengatur, dan mengeluarkan ikon desktop Windows
Apakah Nama Fail Panjang?
Apakah FDD (Floppy Disk Drive)?
Apakah yang dimaksudkan dengan Serangan Panen Direktori?
Bagaimana untuk menukar butang tetikus kiri dan kanan
Bagaimana saya boleh menukar gambar ke JPG atau jenis imej yang lain?
Bagaimanakah saya Mengubah Kecerahan atau Kontras di Komputer Riba saya?
Hubungi Kami: [email protected]