CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm uzman konularını birleştirerek çalışan bir mini uygulama yazarsın.

Birleştirme

Son derste tüm parçaları birleştirirsin. main, sırayla kernel_init'i, parse_command'u ve security_check'i çağırır. Her çağrının sonucu yazdırılır; program "Bitti" mesajıyla sonlanır.

Bu, bir sistem uygulamasının akışını modeller: önce çekirdek hazırlanır, sonra komutlar çözümlenir, her giriş güvenlik denetiminden geçer. Üç modül — çekirdek, derleyici ve güvenlik — tek bir main içinde çalışır. Önceki dersin çözümü başlangıç koduna dahildir; sen yalnızca security_check çağrısını ve "Bitti" mesajını eklersin. Programın tam çıktısı deterministiktir.

Sistem akışı

Birleştirilmiş programın akışı: main önce "Proje başladı" yazdırır, sonra kernel_init() ile çekirdeği hazırlar. Ardından parse_command("help") ile komutu çözer ve sonucu yazdırır.

Sıradaki adım, security_check("test", 4) ile güvenlik denetimidir; sonuç yazdırılır. Son olarak "Bitti" mesajı ile program sonlanır. Bu akış, gerçek bir sistemin başlatma ve komut işleme adımlarını basitleştirilmiş olarak gösterir. Her modül bir kez çağrılır; çıktı deterministiktir ve her çalıştırmada aynıdır.

Uygulama Son birleştirmeyi yap

main içinde printf("Komut: %d\n", parse_command("help")) satırından sonra printf("Güvenlik: %d\n", security_check("test", 4)) ekle. En son printf("Bitti\n") ile programı bitir.

Başlangıç kodu

main.c
#include <stdio.h>
#include <string.h>

void kernel_init(void);
int parse_command(const char *cmd);
int security_check(const char *buf, int len);

void kernel_init(void) {
    printf("Çekirdek başladı\n");
}

int syscall(int num) {
    return num * 2;
}

int parse_command(const char *cmd) {
    if (strcmp(cmd, "help") == 0) return 1;
    if (strcmp(cmd, "exit") == 0) return 2;
    return 0;
}

int security_check(const char *buf, int len) {
    if (len < 0 || len > 16) return 0;
    if (buf == NULL) return 0;
    return 1;
}

int main(void) {
    printf("Proje başladı\n");
    kernel_init();
    printf("Komut: %d\n", parse_command("help"));
    // security_check çağır ve Güvenlik yazdır
    // Bitti yazdır
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <string.h>

void kernel_init(void);
int parse_command(const char *cmd);
int security_check(const char *buf, int len);

void kernel_init(void) {
    printf("Çekirdek başladı\n");
}

int syscall(int num) {
    return num * 2;
}

int parse_command(const char *cmd) {
    if (strcmp(cmd, "help") == 0) return 1;
    if (strcmp(cmd, "exit") == 0) return 2;
    return 0;
}

int security_check(const char *buf, int len) {
    if (len < 0 || len > 16) return 0;
    if (buf == NULL) return 0;
    return 1;
}

int main(void) {
    printf("Proje başladı\n");
    kernel_init();
    printf("Komut: %d\n", parse_command("help"));
    printf("Güvenlik: %d\n", security_check("test", 4));
    printf("Bitti\n");
    return 0;
}

Beklenen çıktı

Proje başladı
Çekirdek başladı
Komut: 1
Güvenlik: 1
Bitti

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Modülü son görevine eşle

Kavram Anlamı
Çekirdek kernel_init()
Derleyici parse_command()
Güvenlik security_check()
Çıkış printf Bitti

2 Projenin son adımı nedir?

  • Sadece güvenliği çağır
  • Sadece çekirdeği çağır
  • Tüm modülleri çağır ve 'Bitti' yazdır Doğru cevap
  • Hiçbir şey çağırma

Açıklama: Son adımda tüm modüller çağrılır ve 'Bitti' yazdırılır.

3 Son printf'i tamamla

Soru
printf("____
");
Cevap
printf("Bitti
");

Açıklama: printf("Bitti\n"); programın sonlandığını bildirir.

Uzman bölümündeki tüm dersler