Özet - Dinamik yükleme
- C kursu
- İleri seviye
- Ders 54/83
- 5 dk
dlopen ve dlsym'i birleştirerek bir plugin sistemi yazarsın.
Dinamik yükleme özeti
Dinamik yükleme araç setini öğrendin: dlopen kütüphane yükler, dlsym sembol çözümler, dlclose kapatır, dlerror hata yakalar. Bunlar eklenti sistemlerinin, yorumlayıcıların ve modüler mimarinin çekirdeğidir.
Bu özette dört aracı birleştirip bir dl hazırlık uygulaması yazacağız. Hepsini bir arada kullanmak, gerçek bir plugin sisteminin nasıl kurulduğunu gösterir. Çıktı deterministiktir: sabit bir hazır mesajı yazdırırız.
Uygulama dl hazırla
dlerror(); ile eski hatayı temizle. void *h = dlopen(NULL, RTLD_LAZY); ile yükle. void *sym = NULL; if (h) { sym = dlsym(h, "printf"); } ile sembol al. (void)sym;. printf("dl hazır\n"); ile yazdır. if (h) dlclose(h); ile kapat.
Başlangıç kodu
#include <stdio.h>
#include <dlfcn.h>
// eski hatayı temizle ve yükle
// sembolü çözümle
// hazır yazdır ve kapat
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <dlfcn.h>
int main(void) {
dlerror();
void *h = dlopen(NULL, RTLD_LAZY);
void *sym = NULL;
if (h) {
sym = dlsym(h, "printf");
}
(void)sym;
printf("dl hazır\n");
if (h) dlclose(h);
return 0;
}Beklenen çıktı
dl hazır
Sonraki adımlar
Dinamik yüklemeyi tamamladın. Bu temeller, eklenti sistemlerinin, betik dili yorumlayıcılarının ve modüler servis mimarisinin çekirdeğidir. dlopen ile yükle, dlsym ile çağır, dlerror ile koru.
Sonraki konu: kriptografi temelleri. Hash, HMAC, AES ve güvenli rastgele sayı ile veri bütünlüğü ve gizlilik sağlamayı öğreneceksin. Dinamik yükleme ile birleşince, örneğin OpenSSL kütüphanesini runtime'da yükleyip kullanabilirsin.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangi fonksiyon önce çağrılmalıdır?
- dlclose
- dlopen Doğru cevap
- dlsym
- dlerror
Açıklama: dlopen önce çağrılır; sonra dlsym, en son dlclose.
2 dl fonksiyonlarını eşle
| Kavram | Anlamı |
|---|---|
dlopen |
Yükler |
dlsym |
Çözümler |
dlclose |
Kapatır |
dlerror |
Hata verir |