Pengaturcaraan C

Cara Menggunakan Panggilan Sistem Terbuka di C

Cara Menggunakan Panggilan Sistem Terbuka di C

Panggilan sistem digunakan dalam distribusi Linux untuk menyediakan pintu masuk dalam OS Linux dan program. Sistem operasi Linux menggunakan perpustakaan Glibc untuk menyokong panggilan sistem di dalamnya semasa menggunakan bahasa C. Terdapat lebih banyak cara untuk menggunakan panggilan sistem juga. Dalam panduan artikel ini, kita akan membincangkan panggilan sistem terbuka dalam sistem Linux. Panggilan sistem "Buka" telah digunakan untuk membuka file yang ditentukan di jalan dengan cepat. Ini memberitahu kami mengenai deskriptor fail dari fail yang dibuat pengguna. Kami telah menggunakan Ubuntu 20.04 untuk mendapatkan panggilan sistem "Buka" secara langsung.

Pasang Perpustakaan

Bahasa C memerlukan beberapa pakej perpustakaan tambahan untuk dipasang sebagai prasyarat. Pertama sekali, anda perlu memasang pakej manpages-dev untuk memeriksa maklumat mengenai panggilan sistem. Buka terminal baris perintah dari kawasan aktiviti dan jalankan arahan di bawah ini untuk memasang halaman utama.

$ sudo apt install manpages-dev

Keluaran untuk penyelesaian pemasangan telah diberikan di bawah.

Sekarang kita akan memeriksa panggilan sistem terbuka menggunakan perintah "man" seperti di bawah.

$ lelaki 2 terbuka

Halaman man output untuk panggilan sistem "Buka" telah ditunjukkan di bawah. Anda dapat melihat maklumat tambahan mengenainya. Tekan butang "q" untuk keluar.

Sintaks di atas menunjukkan tiga baris pertama perpustakaan yang diperlukan untuk ditambahkan untuk panggilan sistem. Terdapat tiga sintaks yang tersedia untuk panggilan sistem terbuka. Sintaks pertama menunjukkan "nama jalan," yang merupakan nama fail yang akan dibuka. Parameter kedua, "bendera" menunjukkan moda fail, e.g., membaca atau menulis. Sintaks kedua dapat digunakan apabila fail tidak ada. Mod parameter digunakan untuk menunjukkan hak istimewa pada fail.

Kini tiba masanya untuk memasang pengkompil GCC untuk penyahpepijatan kod C di Ubuntu 20.04 Edaran Linux. Untuk itu, jalankan arahan di bawah pada shell untuk melakukannya.

$ sudo apt pasangkan gcc

Ia memerlukan anda mengetuk "Y" untuk terus memasang pengompil GCC, jika tidak tekan butang "n" untuk menutup pemasangan. Oleh itu tekan butang "y" dan tekan Enter untuk meneruskan.

Keluaran untuk penyelesaian ditunjukkan di bawah.

Contoh 01

Mari kita lihat contoh panggilan sistem "Terbuka" yang sangat mudah. Pertama sekali, buka shell arahan dan buat "ujian" fail teks baru.txt ”menggunakan arahan sentuhan mudah seperti berikut:

$ sentuhan ujian.txt

Tambahkan beberapa data ke dalamnya secara manual. Anda dapat melihat data dalam fail menggunakan perintah kucing di bawah.

$ ujian kucing.txt

Sekarang mari kita buat fail C baru menggunakan perintah nano di shell, seperti yang ditunjukkan di bawah.

$ nano baru.c

Fail nano GNU di bawah akan dibuka. Anda mesti menaip kod bahasa C di bawahnya. Anda dapat melihat kami telah menambahkan pakej perpustakaan yang diperlukan agar kod C dapat dilaksanakan dengan baik. Selepas itu, kami telah menentukan fungsi utama untuk menjalankan panggilan sistem Terbuka. Kami telah menyatakan dua pemboleh ubah integer. Pemboleh ubah "n" digunakan untuk menghitung nilai penyangga, dan "fd" digunakan untuk deskriptor file. Kami telah menyatakan array buffer jenis watak sebagai "buf" dengan ukuran 50. Panggilan sistem terbuka telah digunakan untuk membaca kandungan dari fail “test.txt ”dan kembalikan ke deskriptor fail. "O_RDONLY" telah digunakan untuk tujuan membaca. Baris seterusnya menunjukkan panggilan sistem baca untuk mengumpulkan 10 bait dari penyangga dan mengembalikannya ke bilangan bulat n. Juga, perintah tulis telah digunakan untuk menulis konten atau data penyangga ke dalam deskriptor file, yang merupakan layar output Dalam kes kita sekarang. Simpan fail ini menggunakan Ctrl + S dan tutup menggunakan perintah Ctrl + X.

#sertakan
#sertakan
#sertakan
#sertakan
int utama ()

int n, fd;
char buf [50];
fd = terbuka (“ujian.txt ”, O_RDONLY);
n = baca (fd, buf, 10);
tulis (1, buf, 10);

Mari kita susun dahulu kod C untuk panggilan sistem terbuka menggunakan arahan gcc di bawah.

$ gcc baru.c

Kini tiba masanya untuk memeriksa output untuk kod C untuk panggilan sistem terbuka. Mari gunakan di bawah a.perintah keluar di shell. Output memaparkan 10 bait dari kandungan "ujian" fail.txt ”.

$ ./ a.keluar

Mari kita ambil contoh lain untuk menulis kandungan satu fail ke dalam fail lain menggunakan panggilan sistem Terbuka. Untuk membuat fail C baru menggunakan perintah nano seperti di bawah.

$ nano baru.c

Oleh itu, ambil kod yang sama dengan perubahan kecil di dalamnya. Kami telah menentukan deskriptor fail lain dalam kod sebagai "fd1". Semua kodnya sama kecuali satu baris tambahan. Baris terakhir kedua kod telah menggunakan panggilan sistem terbuka untuk membuat fail baru bernama "target" menggunakan O_CREAT dan mod, hanya tulis sebagai O_WRONLY. 0642 menunjukkan keistimewaan yang diberikan kepada fail ini. Dan fail tersebut telah dikembalikan ke deskriptor fail baru. Baris seterusnya menunjukkan arahan untuk menulis byte kandungan dalam buffer mengikut deskriptor failnya. Simpan fail dan tutup.

Jalankan perintah kompilasi gcc untuk men-debug fail bahasa C.

$ gcc baru.c

Untuk memaparkan output kod C, cuba a.arahan keluar di shell seperti di bawah. Tidak ada output kerana output telah diarahkan ke "target" file yang baru dibuat.

$ ./ a.keluar

Mari kita periksa data sasaran fail menggunakan perintah kucing. Hasilnya menunjukkan bahawa fail tersebut mempunyai 20 bait di dalamnya.

sasaran kucing $

Kesimpulannya

Dalam tutorial di atas, kami menjelaskan kepada anda untuk menggunakan panggilan sistem terbuka dalam bahasa C dengan menggunakan penyusun gcc. Dengan bantuan pelbagai contoh yang dijelaskan dalam panduan ini akan menuntun anda untuk melaksanakan program yang anda inginkan.

Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...
Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...
OpenTTD vs Simutrans
Membuat simulasi pengangkutan anda sendiri boleh menyeronokkan, santai dan sangat menarik. Itulah sebabnya anda perlu memastikan bahawa anda mencuba s...