C'de Linux chdir Sistem Çağrısı

C De Linux Chdir Sistem Cagrisi



Bir cihazın mevcut çalışma dizinindeki değişiklikler “CHDIR” yöntemi kullanılarak yapılır. Çeşitli durumlarda, cihazınızın mevcut çalışma klasörünü değiştirmeye karar verebilirsiniz. Veya mevcut çalışma dizininiz yerine bir klasörden bir C betiği çalıştırmak istiyorsunuz. Sonuç olarak, bu belirli C kodunu çalıştırmak için mevcut çalışma klasörünüzü değiştirmelisiniz. Ek olarak, mevcut çalışma klasörünün ne zaman değiştiğini hızlı bir şekilde belirlemek için kodlama dili C'nin “getcwd” yöntemi kullanılabilir. Şimdi, bu makalede bir çalışma dizinini değiştirmek için C'nin chdir() işlevini kullanacağız.

Örnek 01:

Linux işletim sisteminde C'nin chdir() fonksiyonunun çalışmasıyla başlayalım. Bunun için, C'nin derleyicisinin zaten sizin tarafınızda kurulu olduğundan emin olmalısınız. Çoğu durumda, Kali Linux işletim sistemimizde C'nin “gcc” derleyicisini kullanma eğilimindeyiz. Bu örnekle başlamak için “c” uzantılı bir C dosyamız olmalıdır. P1.c adını verdik ve aşağıda gösterildiği gibi Linux'un “nano” editörü ile açmaya çalıştık.







Dosyanız editörde açıldığında, içinde kodlamaya başlamanız gerekir. Herhangi bir C programında olması gereken C'nin ana başlık kitaplıklarını ekleyerek C programımıza başlıyoruz. Bu nedenle, standart girdi ve çıktının program içinde akmasını sağlamak için stdio.h ve unistd.h başlık kitaplıkları kullanılır. unistd.h başlığı, özellikle bu örnek için gerekli olan bazı standart C işlevlerinden yararlanmak için kullanılmıştır. Şimdi, yürütme sırasında otomatik olarak çalışması için bu koddaki C'nin main() sürücü işlevini başlattık. Karakter tipi dizi değişkeni “path” sadece 100 değer sakladığından 100 boyutunda tanımlanmıştır.



printf() fonksiyon ifadesi, “getcwd()” fonksiyonunu kullanarak bu C dosyasının mevcut çalışma dizini klasörünü basitçe yazdırmak için kullanılmıştır. Bu işlev, içindeki geçerli çalışma dizinini almak ve görüntülemek için printf() işlev ifadesine geçirmek için 100 boyutunda 'yol' dizi değişkenini kullanır. Şimdi chdir() işlevini kullanma zamanı. Dizinde ilerlemek isteyip istemediğimizi veya aynı dizin içinde geri yönde hareket etmek isteyip istemediğimizi belirtmek için herhangi bir tür karakter iletebiliriz.



Bu nedenle, mevcut çalışma dizininden geriye doğru, yani mevcut çalışma dizininin bir seviye altında hareket etmek için chdir() fonksiyon ifadesindeki “..” karakterlerini denedik. Şu anda Kali Linux sisteminin ana “Linux” çalışma dizinimizin proje klasöründe çalıştığımızı unutmayın. Artık “chdir” fonksiyonunu kullandıktan sonra “project” dizini yerine “Linux” dizinindeyiz. Şimdi, içindeki “getcwd” fonksiyonunu kullanarak mevcut çalışma dizinini görüntülemek için “printf()” fonksiyon ifadesini bir kez daha denedik. Programımız 0 ifadesi ile sona ermektedir.





Bu C programını kaydettikten sonra, zaten kendi tarafımızda yapılandırdığımız “gcc” derleyicisini kullanarak onu derlememiz gerekiyor. Bu gcc komutunu kullanarak, aşağıda gösterildiği gibi –o seçeneğini kullanarak bu C dosyasının “p1.out” adlı bir nesne dosyasını oluşturduk.



Şimdi, nesne dosyasını Linux terminalinizde çalıştırdığınızda, chdir() işlevini kullanmadan önce program tarafından kullanılan çalışma dizinini alacaksınız. chdir() fonksiyonunu kullandıktan sonra, aşağıdaki bir dizine geçtik ve o belirli “home” dizini görüntüleniyor.

Örnek 02:



Aynı başlık kitaplıklarını kullanarak bu program kodunu başlattık. Bu programın main() fonksiyonu içerisinde, içindeki chdir() fonksiyonunu kullanarak “if” ifadesini kullanıyoruz.

Bu fonksiyon, “/user!=0” koşulunu ayarlayarak “/user”ın sistemde olup olmadığını kontrol edecektir. Dizin mevcut sistemde mevcut değilse, ilgili hata mesajını, yani “kullanıcı dizini mevcut değil. İçinde chdir() işlevini kullanarak başka bir “if” ifadesi kullanıyoruz. Burada chdir() fonksiyonunu kullanma amacımız da yukarıdaki if deyiminde yaptığımızla aynıdır, bu da dizinin var olup olmadığını kontrol etmek için “/temp”!=0 koşulunu kullanmaktır. Tek fark, aşağıdaki kod görüntüsünden de görebileceğiniz gibi “/user” yerine yeni bir dizin adı “/temp” kullanılmasıdır.







Sistemde /temp dizini yoksa, “if” deyiminde kullanılan perror işlevi, aşağıdaki resimde gösterildiği gibi “/temp dizini yok” hata mesajı verir. Her iki “if” ifadesini de kullandıktan sonra, bu kodu C'nin 0 ifadesi ile sonlandırıyoruz. Şimdi program bitti. Yürütülmeden önce Ctrl+S kısayolunu kullanarak C kodumuzu kaydediyoruz.





Artık dosya sisteminize kaydedildiğine göre, C kodunu zaten tarafımıza monte ettiğimiz “gcc” derleyicisi ile derlememiz gerekiyor. Bu talimatı kullanarak, talimattaki –o seçeneğini kullanarak “p2.out” nesne dosyasını oluşturuyoruz.





Oluşturulan “p2.out” nesne dosyasını “./” karakterleriyle çalıştırdıktan sonra, “chdir” yolunda belirtilen her iki dizinin de sistemde olmadığını veya kabukta görüntülenen hatanın ortaya çıktığını öğrendik. düzgün.



Çözüm

Bugünkü bu yazımızda Kali Linux işletim sisteminde C'nin chdir() fonksiyonunun kullanımını gösterdik. İlk örnek, bir çalışma dizinini değiştirmek, yani bir dizinden diğerine geçmek için chdir() işlevinin nasıl kullanılabileceğini gösterir. Son C örneği, chdir() yolunda belirtilen mevcut çalışma dizininin var olup olmadığını nasıl kontrol edebileceğimizi gösterir.