dlclose
- C kursu
- İleri seviye
- Ders 51/83
- 5 dk
dlclose ile kütüphaneyi kapatmayı öğrenirsin.
dlclose nedir?
dlclose, dlopen ile alınan tanıtıcıyı kapatır. Referans sayısını azaltır; sıfıra inince kütüphane bellekten kaldırılır. int r = dlclose(h); çağrısı başarıda 0, hatada -1 döner.
Kapatma, kaynak sızıntısını önler. Kütüphane birden çok kez dlopen ile yüklenmişse her çağrı için bir dlclose gerekir. Açık tanıtıcılarla çalışmaya devam etmek güvenli değildir; önce işleri bitir, sonra kapat. Test için printf("kapandı\n") yazdırmak yeterlidir.
Yükle-kapat deseni
En basit akış: void *h = dlopen(NULL, RTLD_LAZY);, if (h) dlclose(h);, printf("kapandı\n");. Kapatma çağrısından önce sembol işlemlerinin bittiğinden emin olmalısın.
Test için tanıtıcıyı hemen kapatıp ardından printf yapmak yeterlidir. Çıktı deterministiktir. Gerçek uygulamada dlclose dönüş değerini denetleyip hata varsa dlerror ile ileti alabilirsin. Birden çok kütüphane kullanıyorsan her biri için ayrı dlclose çağrısı yapmalısın.
Uygulama Kütüphaneyi kapat
void *h = dlopen(NULL, RTLD_LAZY); ile tanıtıcı al. if (h) dlclose(h); ile kapat. printf("kapandı\n"); ile yazdır.
Başlangıç kodu
#include <stdio.h>
#include <dlfcn.h>
// kütüphane yüklenir
// kapat
// yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <dlfcn.h>
int main(void) {
void *h = dlopen(NULL, RTLD_LAZY);
if (h) dlclose(h);
printf("kapandı\n");
return 0;
}Beklenen çıktı
kapandı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 dlclose çağrısı
dlclose(____);
dlclose(h);
Açıklama: dlclose, h tanıtıcısını kapatır.
2 dlclose parçalarını eşle
| Kavram | Anlamı |
|---|---|
dlclose |
Tanıtıcıyı kapatır |
0 |
Başarı |
-1 |
Hata |
referans sayısı |
Sayaç |
3 dlclose başarılı olduğunda ne döner?
- void
- dosya tanıtıcı
- 0 veya -1 Doğru cevap
- void *
Açıklama: dlclose başarıda 0, hatada -1 döner.