Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Apakah perbezaan antara open dan fopen dalam Linux?

Apakah perbezaan antara open dan fopen dalam Linux?

青灯夜游
青灯夜游asal
2022-04-29 18:57:045239semak imbas

Perbezaan: 1. open ialah fungsi panggilan sistem UNIX, manakala fopen ialah fungsi perpustakaan bahasa C dalam standard ANSIC 2. open tidak semudah fopen; 3. fopen hanya boleh memanipulasi fail biasa; , manakala open boleh mengendalikan fail biasa, soket rangkaian, dsb. 4. open tidak mempunyai buffering, manakala fopen mempunyai buffering.

Apakah perbezaan antara open dan fopen dalam Linux?

Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.

sistem linux: perbezaan antara open dan fopen

1 sumber Dari perspektif, kedua-duanya boleh dibezakan dengan baik Ini juga merupakan perbezaan yang paling jelas antara keduanya:

ialah fungsi panggilan sistem UNIX (termasuk LINUX, dll.), yang mengembalikan a. deskriptor fail (f' d), iaitu indeks fail dalam jadual deskriptor fail;

open ialah fungsi perpustakaan bahasa C dalam piawaian ANSIC, yang sepatutnya memanggil API kernel yang berbeza dalam sistem yang berbeza . Apa yang dikembalikan adalah penunjuk kepada struktur fail.

fopen2. Kemudahalihan

Ini boleh disimpulkan daripada sumber di atas `fopen` ialah fungsi standard C, jadi ia mempunyai kemudahalihan yang baik panggilan sistem UNIX dengan mudah alih terhad. Untuk fungsi serupa di bawah tetingkap, gunakan fungsi API `CreateFile`.

3 Skop aplikasi

Mengembalikan deskriptor fail, dan deskriptor fail ialah konsep penting di bawah sistem UNIX, dan semua peranti di bawah UNIX adalah Beroperasi sebagai fail. Seperti soket rangkaian, peranti perkakasan, dsb. Sudah tentu, ini termasuk mengendalikan fail biasa.

fopen digunakan untuk memanipulasi fail biasa (Regular File). open

4. Tahap IO Fail

Dari perspektif IO fail, yang pertama ialah fungsi IO peringkat rendah, dan yang kedua ialah fungsi IO peringkat tinggi . Perbezaan mudah antara peringkat rendah dan peringkat tinggi ialah: siapa yang lebih dekat dengan kernel sistem. IO fail peringkat rendah berjalan dalam mod kernel, dan fail peringkat tinggi IO berjalan dalam mod pengguna.

5. Penimbalan

Sistem fail penimbal
    Ciri-ciri sistem fail penimbal ialah: membuka "penampan" dalam ingatan untuk Setiap fail dalam program digunakan semasa menjalankan operasi membaca fail, data dibaca dari fail cakera ke dalam "penampan" memori, dan selepas ia penuh, data yang diperlukan dibaca dari "penampan" memori sewajarnya. Apabila melakukan operasi menulis fail, data pertama kali ditulis ke dalam "penampan" memori, dan kemudian fail itu ditulis selepas "penampan" memori penuh. Ia boleh dilihat daripada ini bahawa saiz "penampan" memori mempengaruhi bilangan sebenar operasi memori luaran Semakin besar "penampan" memori, semakin sedikit bilangan operasi memori luaran, dan kelajuan pelaksanaan lebih cepat dan lebih cekap. . Secara umumnya, saiz fail "penampan" bergantung pada mesin.
  • Tunggu.


    fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind

    Sistem fail bukan penimbal
  • Sistem fail penimbal menguruskan fail dengan bantuan penunjuk struktur fail dan mengakses fail melalui penunjuk fail. Ia boleh membaca dan menulis aksara, rentetan aksara , data berformat, dan juga boleh membaca dan menulis data binari. Sistem fail bukan buffer bergantung pada sistem pengendalian Membaca dan menulis fail melalui fungsi sistem pengendalian adalah input dan output peringkat sistem Ia tidak mempunyai penunjuk struktur fail dan hanya boleh membaca dan menulis fail binari adalah sangat cekap dan pantas Standard ANSI tidak lagi meliputi sistem fail yang tidak dibuffer, jadi adalah disyorkan untuk tidak memilihnya.
  • Tunggu.


    open, close, read, write, getc, getchar, putc, putchar

    Untuk meringkaskannya dalam satu ayat,
  • tidak mempunyai penimbalan dan
mempunyai penimbalan. Yang pertama digunakan bersama dengan

, open, dsb., dan yang terakhir digunakan bersama dengan fopen, read, dsb. writefreadMenggunakan fungsi fwrite, memandangkan terdapat penimbal dalam mod pengguna, penukaran antara mod pengguna dan mod kernel dikurangkan apabila melakukan operasi baca dan tulis fail (bertukar kepada mod kernel masih memerlukan memanggil sistem Memanggil API:

,

); fopenread Menggunakan fungsi write memerlukan pertukaran antara mod kernel dan mod pengguna setiap kali semasa membaca dan menulis fail; prestasi ialah jika fail diakses secara berurutan, fungsi siri

adalah lebih pantas daripada fungsi siri

yang dipanggil terus jika fail itu diakses secara rawak, sebaliknya adalah benar. open

Cadangan berkaitan: "

Tutorial Video Linuxfopen"open

Atas ialah kandungan terperinci Apakah perbezaan antara open dan fopen dalam Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah kompilasi silang linuxArtikel seterusnya:Apakah kompilasi silang linux