Rumah >Tutorial sistem >LINUX >Untuk membaca data daripada fail, aplikasi terlebih dahulu memanggil fungsi sistem pengendalian
Dalam fail I/O, untuk membaca data daripada fail pengendali fail linux, aplikasi mesti terlebih dahulu memanggil fungsi sistem pengendalian dan lulus nama fail, dan memilih laluan ke fail untuk membuka fail. Fungsi ini mengembalikan nombor jujukan, iaitu pemegang fail Perl (pemegang fail)Pemegang fail linux ialah satu-satunya asas untuk mengenal pasti fail yang terbuka. Untuk membaca sekeping data daripada fail, aplikasi perlu memanggil fungsi ReadFile dan menghantar alamat pemegang fail Perl dalam memori video dan bilangan bait untuk disalin ke sistem pengendalian. Apabila tugas selesai, fail ditutup dengan memanggil fungsi sistem.
Bukan sahaja anda menulis program kecerdasan buatan meniru ahli falsafah solipsi, program anda menggunakan kaedah yang tidak berkomunikasi dengan dunia luar. Dalam baris ketiga dan keempat contoh kelas, anda akan melihat "GRED", yang merupakan jenis data yang merujuk kepada fail Perl lain, dipanggil failhandle. Pemegang ialah nama yang anda berikan kepada fail, peranti, soket atau saluran paip untuk membantu anda mengingati nama yang anda gunakan dan menyembunyikan kerumitan cache individu, dsb. (Secara dalaman, pemegang adalah seperti strim dalam C++, atau saluran I/O dalam BASIC.) Pemegang memudahkan anda memasukkan dan mengeluarkan ke tempat yang berbeza. Salah satu perkara yang menjadikan Perl sebagai bahasa yang baik ialah keupayaannya untuk berkomunikasi dengan berbilang fail dan memproses semuanya sekaligus. Mempunyai nama simbolik yang baik untuk objek luar adalah bahagian penting dari bahasa yang baik [1].
Perkara lain yang menjadikan Perl sebagai bahasa yang baik ialah: ia adalah 8-bit, ia boleh dibenamkan dan anda boleh membenamkan atur cara lain dalam Perl melalui mod sambungan. Ia ringkas dan mudah digunakan di web. Persekitaran yang jelas dan senang diajak berbincang. Anda boleh merujuknya dalam pelbagai cara (seperti yang dilihat di atas). Sebenarnya, bahasa itu sendiri tidak tersusun dengan ketat sehingga anda tidak boleh menjawab soalan anda. Kembali ke TMTOWTDI semula.
Anda mencipta pemegang dan menyambungkannya ke fail melalui fungsi terbuka. open mengambil dua parameter: pemegang dan nama fail yang anda ingin pautkan kepadanya. Perl juga menyediakan beberapa pemegang yang dipratentukan (dan pra-dibuka). STDIN ialah saluran input biasa program anda dan STDOUT ialah saluran keluaran biasa program anda. STDERR ialah saluran keluaran tambahan supaya atur cara boleh memberikan beberapa arahan apabila menukar input kepada output [2].
Biasanya, pemegang ini dipautkan ke terminal anda, jadi anda boleh menaip program anda dan melihatnya, tetapi ia juga boleh dipautkan ke fail. Perl boleh memberi anda pemegang pratakrif ini kerana sistem pengendalian anda sudah menyediakannya. Di bawah UNIX, proses mewarisi input, output dan ralat standard daripada proses induknya (biasanya shell). Salah satu tanggungjawab shell adalah untuk menstruktur aliran I/O ini supaya proses kanak-kanak tidak perlu risau tentang itu).
Oleh kerana anda boleh membuat pemegang untuk pelbagai tujuan (input, output, saluran paip) menggunakan fungsi terbuka, anda mesti boleh menentukan perkara yang anda mahu lakukan. Sama seperti pada baris arahan UNIX, anda hanya menambah aksara pada nama fail.
Salin kod seperti berikut:
buka(SESAME,"nama fail");#Baca daripada fail sedia ada
open(SESAME,"open(SESAME,">filename");#Buat fail dan tulis padanya
open(SESAME,">>filename");#Teruskan menulis ke fail sedia ada
open(SESAME,"|output-pipe-command");#Bina penapis output
buka(SESAME,"input-pipe-command|");#Bina penapis input
Seperti yang anda dengar, anda boleh memilih mana-mana nama yang anda mahu. Sebaik sahaja pemegang SESAME dibuka, ia boleh digunakan untuk mengakses fail atau paip sehingga ia ditutup secara eksplisit (dengan tutup(SESAME)), atau satu siri bukaan ke pemegang yang sama memautkan pemegang ini ke fail lain [3 ].
Membuka pemegang yang sudah terbuka secara tersirat menutup fail pertama, menjadikannya tidak tersedia kepada pemegang fail Perl dan membuka fail lain. Anda perlu sedar bahawa ini adalah perkara yang anda mahu lakukan. Kadangkala, alat muat turun linux berlaku secara kebetulan Contohnya, apabila anda membuka($handle,$file), $handle kebetulan mengandungi rentetan kosong (null). Pastikan anda menetapkan $handle kepada satu nilai, jika tidak, anda akan membuka fail baharu dengan pemegang null.
Setelah anda membuka pemegang untuk input (atau anda menggunakan STDIN), anda boleh menggunakan "operasi baca baris" untuk membaca baris. Yang ini juga dikenali sebagai operasi batu, kerana bentuknya. Operasi batu ini mengandungi pemegang()[4] yang anda mahu baca. Gunakan pemegang STDID untuk membaca jawapan yang diberikan oleh pengguna, seperti berikut:
Operasi batu kosong akan dibaca daripada semua fail yang dinyatakan pada baris arahan Jika tidak dinyatakan, ia akan dibaca daripada STDIN. (Ini adalah tingkah laku standard banyak program "penapis" UNIX)
Salin kod seperti berikut:
printSTDOUT"Enteranumber:";#Minta untuk memasukkan nombor
$number=;#Masukkan nombor
printSTDOUT"Thenumberis$number";#Output this number
Adakah anda faham contoh yang kami berikan kepada anda Apakah yang dilakukan oleh STDOUT dalam ayat cetakan Ini adalah salah satu cara anda menggunakan pengendali keluaran? Pemegang boleh digunakan sebagai parameter pertama pernyataan cetak Jika ia wujud, ia memberitahu tempat untuk mengeluarkan. Dalam contoh, pemegang adalah berlebihan kerana output sudah STDOUT. Lalai untuk input ialah STDIN dan untuk output ialah STDOUT. (Kami telah meninggalkan baris 18 contoh balas kelas untuk mengelakkan anda mengelirukan.)
Kami juga mempunyai satu perkara yang anda tidak faham. Jika anda mencuba contoh di dalam, anda dapat melihat bahawa anda mendapat baris yang sangat kosong. Kerana anda tidak mengalih keluar aksara baris baharu (baris baharu) secara manual daripada baris input anda semasa membaca (contohnya, anda memasukkan "9"). Untuk kes ini, apabila anda ingin mengalih keluar baris baharu, Perl menyediakan fungsi chop dan chomp. chop akan memadam (dan mengembalikan) aksara terakhir yang diserahkan kepadanya secara sembarangan, manakala chomp hanya akan memadamkan penghujung pengecam rekod (biasanya ""), dan mengembalikan bilangan aksara yang dipadamkan.
Atas ialah kandungan terperinci Untuk membaca data daripada fail, aplikasi terlebih dahulu memanggil fungsi sistem pengendalian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!