C'de Açık Sistem Çağrısı Nasıl Kullanılır

How Use Open System Call C



Sistem çağrıları, Linux işletim sistemi ve programlar içinde bir kapı sağlamak için Linux dağıtımlarında kullanılır. Linux işletim sistemi, C dilini kullanırken sistem çağrılarını desteklemek için Glibc kitaplığını kullanır. Sistem çağrılarını kullanmanın daha birçok yolu vardır. Bu makale kılavuzunda, Linux sistemindeki açık sistem çağrısını tartışacağız. Açık sistem çağrısı, yolda belirtilen dosyayı hızlı bir şekilde açmak için kullanılmıştır. Kullanıcı tarafından oluşturulan bir dosyanın dosya tanımlayıcısı hakkında bize bilgi verir. Bazı uygulamalı Açık sistem çağrıları almak için Ubuntu 20.04 kullanıyoruz.

Kitaplıkları Yükle

C dili, önkoşul olarak bazı ek kitaplık paketlerinin yüklenmesini gerektirir. Öncelikle sistem çağrıları ile ilgili bilgileri kontrol etmek için manpages-dev paketini kurmanız gerekmektedir. Etkinlik alanından komut satırı terminalini açın ve kılavuz sayfalarını yüklemek için aşağıdaki talimatı uygulayın.







$ sudo apt kurulum kılavuz sayfaları-dev



Kurulumun tamamlanması için çıktı aşağıda verilmiştir.







Şimdi aşağıdaki gibi man komutunu kullanarak açık sistem çağrısını kontrol edeceğiz.

$ adam2açık



Açık sistem çağrısı için çıktı man sayfası aşağıda gösterilmiştir. Bununla ilgili ek bilgileri görebilirsiniz. Çıkmak için q düğmesine basın.

Yukarıdaki sözdizimi, sistem çağrıları için eklenecek gerekli kitaplıkların ilk üç satırını gösterir. Açık sistem çağrısı için kullanılabilen üç sözdizimi vardır. İlk sözdizimi, açılacak dosyanın adı olan yol adını gösterir. İkinci parametre olan bayraklar, bir dosyanın modunu gösterir, örneğin okuma veya yazma. Dosya olmadığında ikinci sözdizimi kullanılabilir. Parametre modu, dosyadaki ayrıcalıkları göstermek için kullanılır.

Şimdi Ubuntu 20.04 Linux dağıtımında C kodunun hata ayıklaması için GCC derleyicisini kurmanın zamanı geldi. Bunun için, bunu yapmak için aşağıdaki komutu Shell'de yürütün.

$ sudo apt yükleme gcc

GCC derleyicisini kurmaya devam etmek için Y'ye dokunmanız gerekir, aksi halde kurulumu kapatmak için n düğmesine basın. Bu yüzden y düğmesine basın ve devam etmek için Enter'a basın.

Tamamlamanın çıktısı aşağıda gösterilmiştir.

Örnek 01

Açık sistem çağrısının çok basit örneğine bakalım. İlk olarak, komut kabuğunu açın ve aşağıdaki gibi basit dokunma komutunu kullanarak yeni bir metin dosyası test.txt oluşturun:

$dokunmatest.txt

El ile bazı veriler ekleyin. Aşağıdaki cat komutunu kullanarak verileri bir dosyada görebilirsiniz.

$keditest.txt

Şimdi aşağıda gösterildiği gibi kabukta bir nano komutu kullanarak yeni bir C dosyası oluşturalım.

$nanoyeni.c

Aşağıdaki GNU nano dosyası açılacaktır. İçine aşağıdaki C dil kodunu yazmanız gerekmektedir. C kodunun düzgün çalışması için gerekli kütüphane paketlerini eklediğimizi görebilirsiniz. Bundan sonra, bir Açık sistem çağrısı üzerinde çalışmak için ana işlevi tanımladık. İki tamsayı değişkeni tanımladık. n değişkeni, arabellek değerlerini saymak için kullanılır ve fd, dosya tanımlayıcı için kullanılır. Karakter tipi tampon dizisini 50 boyutunda buf olarak ilan ettik. Açık sistem çağrısı, test.txt dosyasındaki içeriği okumak ve dosya tanımlayıcısına geri döndürmek için kullanıldı. O_RDONLY, okuma amacıyla kullanılmıştır. Sonraki satır, arabellekten 10 bayt toplamak ve onu n tamsayısına döndürmek için okuma sistemi çağrısını gösterir. Ayrıca, şu anda bizim durumumuzda çıktı ekranı olan dosya tanımlayıcıya içerik veya arabellek verilerini yazmak için write komutu kullanılmıştır. Bu dosyayı Ctrl+S kullanarak kaydedin ve Ctrl+X komutunu kullanarak kapatın.

#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek

intana()
{
intn,fd;
karaktermeraklı[elli];
fd=açık(Ölçek.txt,O_RDONLY);
n=okuman(fd,meraklı, 10);
yazı yazmak(1 ,meraklı, 10);

Öncelikle bir açık sistem çağrısı için C kodunu aşağıdaki gcc komutunu kullanarak derleyelim.

$gccyeni.c

Şimdi açık sistem çağrısı için C kodunun çıktısını kontrol etme zamanı. Kabukta aşağıdaki a.out komutunu kullanalım. Çıktı, test.txt dosyasının içeriğinden 10 baytı görüntüler.

$./ile.dışarı

Bir Açık sistem çağrısı kullanarak bir dosyanın içeriğini başka bir dosyaya yazmak için başka bir örnek alalım. Aşağıdaki gibi nano komutunu kullanarak yeni bir C dosyası oluşturmak için.

$ nano yeni.C

Bu yüzden aynı kodu küçük bir değişiklikle alın. Kodda başka bir dosya tanıtıcısını fd1 olarak tanımladık. Ek bir satır dışında tüm kod aynıdır. Kodun ikinci son satırı, O_CREAT ve O_WRONLY olarak salt yazma modunu kullanarak hedef adlı yeni bir dosya oluşturmak için açık sistem çağrısını kullandı. 0642, bu dosyaya atanan ayrıcalıkları gösterir. Ve dosya yeni bir dosya tanıtıcısına döndürüldü. Sonraki satır, dosya tanımlayıcısına göre arabelleğe içeriğin baytlarını yazmak için bir komut gösterdi. Dosyayı kaydedin ve kapatın.

C dil dosyasında hata ayıklamak için gcc derleme komutunu yürütün.

$ gcc yeni.C

C kodunun çıktısını görüntülemek için aşağıdaki gibi kabuktaki a.out komutunu deneyin. Çıktı yeni oluşturulan dosya hedefine yönlendirildiğinden çıktı yok.

$./ile.dışarı

Cat komutunu kullanarak bir dosya hedefinin verilerini kontrol edelim. Çıktı, dosyanın içinde 20 bayt olduğunu gösterir.

$ kedi hedefi

Çözüm

Yukarıdaki öğreticide, gcc derleyicisini kullanarak C dilinde bir açık sistem çağrısı kullanmayı anlattık. Bu kılavuzda açıklanan farklı örnekler yardımıyla istediğiniz programı uygulamanıza yol açacaktır.