Cara Menggunakan Panggilan Sistem Terbuka di C

How Use Open System Call 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 terbuka telah digunakan untuk membuka fail yang ditentukan di jalan dengan cepat. Ini memberitahu kami tentang deskriptor fail dari fail yang dibuat pengguna. Kami telah menggunakan Ubuntu 20.04 untuk mendapatkan panggilan sistem Open 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-penipu



Keluaran untuk penyelesaian pemasangan telah diberikan di bawah.







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

$ lelaki2buka



Halaman man output untuk panggilan sistem Terbuka 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, menandakan, menunjukkan mod fail, misalnya, membaca atau menulis. Sintaks kedua boleh 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 dalam pengedaran Linux Ubuntu 20.04. Untuk itu, jalankan arahan di bawah dalam shell untuk melakukannya.

$ sudo apt pasang gcc

Ia memerlukan anda mengetuk Y untuk terus memasang penyusun 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 Open yang sangat mudah. Pertama, buka shell arahan dan buat test.txt fail teks baru menggunakan arahan sentuhan mudah seperti berikut:

$sentuhanujian.txt

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

$kucingujian.txt

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

$nanobaru.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 fail. Kami telah menyatakan array buffer jenis watak sebagai buf yang berukuran 50. Panggilan sistem terbuka telah digunakan untuk membaca kandungan dari file test.txt dan mengembalikannya 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 keluaran Dalam kes kita sekarang. Simpan fail ini menggunakan Ctrl + S dan tutup dengan menggunakan perintah Ctrl + X.

#sertakan
#sertakan
#sertakan
#sertakan

intutama()
{
intn,fd;
charbuf[lima puluh];
fd=buka(ujian.txt,O_RDONLY);
n=membaca(fd,buf, 10);
menulis(1 ,buf, 10);

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

$gccbaru.c

Sekarang masanya untuk memeriksa output untuk kod C untuk panggilan sistem terbuka. Mari kita gunakan arahan a.out di bawah shell. Keluaran memaparkan 10 bait dari kandungan test.txt fail.

$./ke.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 sasaran 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 telah menunjukkan arahan untuk menulis byte kandungan dalam penyangga mengikut deskriptor failnya. Simpan fail dan tutup.

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

$ gcc baru.c

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

$./ke.keluar

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

$ kucing sasaran

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.