C Programlama

C'de Fsync Sistem Çağrısı Nasıl Kullanılır

C'de Fsync Sistem Çağrısı Nasıl Kullanılır

fsync, bir dosyanın çekirdek durumunu herhangi bir depolama aygıtıyla koordine etmek için kullanılır. fsync() sistem çağrısı, (i.e., için değiştirilmiş arabellek) fd dosya tanımlayıcısı, böyle bir dosyanın kaldığı bir disk makinesine (veya başka herhangi bir kalıcı depolama aygıtına). Dosyanın ayrıntılarını bile temizler. fsync sistem çağrısı tek bir dosyada çalışır. Dosyadaki tüm güncellemeler temizlenecek. Aynı dosyada birkaç görev düzenlenirse, tüm güncellemeler diske aktarılmadan önce fsync sistem çağrısı askıya alınır. Sistem dönüştürmenin başarılı olduğunu duyurursa, arama engellenir. fsync() kullanmak, dosyanın dosya sistemine dahil edilmesinin diske de girmiş olabileceğini garanti etmez. Ancak bunun için klasörün dosya tanımlayıcısında uygun bir fsync() gereklidir.

Yükleme Önkoşulları:

Bu nedenle, fsync sistem çağrısı üzerinde çalışmak için bazı kitaplıkların yüklenmesi gerekir. Biri fsync komutuyla ilgili ek bilgileri kontrol etmek isterse, Linux sistemlerinde manpages-dev paketlerinin kurulu olması gerekir. Yani bunu nasıl yapacağımızı göreceğiz. Linux komut satırı terminalini başlatmak için klavyeden Ctrl+Alt+T tuşunu kullanın. Şimdi, manpages-dev paketini kurmak için aşağıdaki apt install komutunu ve ardından “manpages-dev” adlı bir paketi deneyin. Kurulum işlemi, Linux'un devam etmesi için hesap şifrenizi gerektirecektir. Bu nedenle, mevcut hesabınızın Linux şifresini girin ve klavyeden Enter tuşuna basın. Linux sisteminizdeki kılavuz sayfalarını hızlı bir şekilde yüklemeye ve yapılandırmaya başlayacaktır. Kurulum işlemini tamamlayana kadar arkanıza yaslanın.

$ sudo apt install manpages-dev

Kurulumdan sonra fsync sistemi ile ilgili bilgileri kontrol etmek için aşağıdaki komutu kullanabilirsiniz.

$ adam 2 fsync

man komutunun çıktısı aşağıya eklenmiştir. Linux sistemindeki “fsync” sistem çağrısı kavramını anlamak için bununla ilgili her türlü bilgiyi okuyabilirsiniz. Bu pencereden çıkmak için klavyeden “q” düğmesine basın.

GCC derleyicisinin fsync sistem çağrı kimliğini kullanmak için gereken başka bir ön koşul. Bunun nedeni, C dilinde fsync sistem çağrısını kullanmamızdır. Bu nedenle, C dili kodunu çalıştırmak ve derlemek için sistemimizde bazı derleyici paketlerinin kurulu olması gerekir. Yani, burada bir GCC derleyicimiz var. Aşağıdaki gibi çok basit sudo apt komutunu kullanarak kurabilirsiniz. Birkaç dakika içinde kurulumunu tamamlayacaktır ve dosyalara kolayca C kodlarını yazabilirsiniz.

$ sudo apt yükleme gcc

Misal:

İyi anlamak için fsync komutu üzerinde çalışmaya başlayalım. Her şeyden önce, komut satırı kabuğundaki nano düzenleyiciyi kullanarak C tipi bir dosya oluşturmanız gerekir. Bunun için aşağıdaki basit sorguyu Shell'de çalıştırmayı deneyin.

$ nano yeni.c

Dosya oluşturulup açıldıktan sonra sıra biraz C kodu yazmaya gelir. Böylece nano dosyasında aşağıdaki uzun kodu görebilirsiniz. İlk 7 satır, “fsync” sistem çağrısının düzgün çalışması için editör dosyasına dahil edilmesi gereken başlık dosyalarına sahiptir. Bu başlık dosyalarından sonra tamsayı dönüş tipine sahip ana işlevi “int” olarak tanımladık. Bu fonksiyon iki parametre içerir. Bunlardan biri tamsayı tipi, diğeri ise karakter tipi dizisidir. Ana fonksiyonun uzayında, “*str” karakter tipi bir dizge bildirdik ve ona bir dizge tipi değeri tanımladık. Bundan sonra, daha sonraki satırlarda dosya tanımlayıcı olarak kullanılacak iki tamsayı tipi değişken tanımladık. Bir sonraki satırda, “test adlı yeni bir dosya oluşturmak için sistem çağrısı oluştur işlevini kullandık.txt” ve parametrede ofset olarak okuma ve yazma ayrıcalıkları. Bu dosya içeriğini "fd" dosya tanımlayıcısına döndürdük. Bu C kodunda if ifadesini tanımladık. Dosya tanıtıcısının değeri veya dizin işaretçisi “-1” ise, yeni bir dosya oluşturmak için creat() işlevini çağırmak için hata verir. "-1"den küçük "fd" tanımlayıcısı, işaretçinin -1 konumunda olduğu anlamına gelir.

Exit() işlevi, if ifadesinin kapanmasından önce çağrılır. Daha sonra, arabellekten dize değerini toplamak ve “test” dosyasına yazmak için yazma yöntemi çağrısını kullanıyoruz."fd" dosya tanımlayıcısını kullanarak robots.txt. Bu veriler "ret" değişkenine döndürüldü. “Ret” değişkeninin değeri -1'den küçükse bu, verinin bir dosyaya yazılmadığı anlamına gelir. Bu nedenle, write işlevini tekrar çağırmanız ve if ifadesinden çıkmanız gerekir. fsync sistem çağrısını tanımladık ve dosya tanıtıcıyı bir disk aygıtıyla eşitlemek için ona parametre değeri olarak bir dosya tanıtıcısı "fd" verdik. “Kapat” yöntemi çağrıldığında, verileri hızlı bir şekilde bir disk sürücüsüne yazar ve dosya tanımlayıcısını kapatır. Bundan sonra, ana işlev kapatılacak. Bu dosyayı klavye kısayol tuşu olan “Ctrl+S” kullanarak kaydedin ve “yeni” dosyasını kapatın.c” “Ctrl+X” kısayol tuşunu kullanarak.

Nano dosyasını kapattıktan sonra şimdi sıra size yukarıda sunulan kodu derlemeye geldi. Kodun derlenmesi için gcc derleyicisini kullanmalıyız. Bu nedenle, “new” dosyasını derlemek için aşağıdaki gcc sorgusunu yürütün.c” dosyası.

$ gcc yeni.c

Şimdi, basit a kullanarak bu kodu çalıştırmamız gerekiyor.aşağıdaki gibi kabukta komut. Bu komut sadece kodu yürütür ve hiçbir şey döndürmez, ancak veriler işlemin arkasında bir disk sürücüsüne yazılmıştır.

$ ./a.dışarı

C kodunda oluşturulan dosyayı kontrol edin ve içinde bir dize değeri var.

$ kedi testi.Txt

Sonuç

Konseptini anlamak için fsync sistem çağrısının çok basit ve doğrusal bir örneğini kısaca tartıştık.Umarım artık Linux'ta fsync sistem çağrısını kolayca kullanabilirsiniz.

Linux için En İyi Komut Satırı Oyunları
Komut satırı, Linux kullanırken yalnızca en büyük müttefikiniz değil, aynı zamanda eğlence kaynağı da olabilir, çünkü onu özel bir grafik kartı gerekt...
Linux için En İyi Gamepad Eşleme Uygulamaları
Tipik bir klavye ve fare giriş sistemi yerine bir gamepad ile Linux'ta oyun oynamayı seviyorsanız, sizin için bazı faydalı uygulamalar var. Çoğu PC oy...
Linux Oyuncuları için Faydalı Araçlar
Linux'ta oyun oynamayı seviyorsanız, oyun deneyimini geliştirmek için Wine, Lutris ve OBS Studio gibi uygulamaları ve yardımcı programları kullanmış o...