CodeBlanks Logo Icon CodeBlanks

Raw mode

  • C kursu
  • İleri seviye
  • Ders 44/83
  • 5 dk

Terminalı raw mode'a almayı öğrenirsin.

Raw mode nedir?

Raw mode, terminalın satır kipini ve diğer işlemlerini kapatır; her tuş vuruşu anında programa iletilir. cfmakeraw(&t) yardımcı fonksiyonu struct termios yapısını raw moda getirir; bu çağrı ICANON, ECHO ve daha birçok bayrağı temizler.

Manuel olarak da yapılabilir: t.c_lflag &= ~(ICANON | ECHO);. Raw moda geçmeden önce eski ayarları tcgetattr ile kaydetmek ve çıkışta tcsetattr ile geri yüklemek önemlidir. Test için cfmakeraw çağrısı sonrası printf("raw: 1\n") yazdırılabilir; bu deterministiktir.

cfmakeraw deseni

Tipik akış: struct termios t;, tcgetattr(STDIN_FILENO, &t); ile oku, cfmakeraw(&t); ile raw moda geçir, tcsetattr(STDIN_FILENO, TCSANOW, &t); ile uygula. Çıkışta eski ayarları geri yükle.

Test için asıl amaç cfmakeraw çağrısını göstermektir. tcsetattr gerçek terminal olmadan başarısız olabilir; ama yine de printf("raw: 1\n") çalışır ve deterministiktir. Gerçek uygulamada atexit ile eski ayarları geri yükleyen bir fonksiyon kaydedilir; böylece program çıkışında terminal normal moda döner.

Uygulama Raw moda geç

struct termios t; tanımla. tcgetattr(STDIN_FILENO, &t); ile oku. cfmakeraw(&t); ile raw moda geçir. printf("raw: 1\n"); ile durum yazdır.

Başlangıç kodu

main.c
#include <stdio.h>
#include <termios.h>
#include <unistd.h>

// terminal yapısını tanımla ve oku
// raw moda geçir
// durumu yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <termios.h>
#include <unistd.h>

int main(void) {
    struct termios t;
    tcgetattr(STDIN_FILENO, &t);
    cfmakeraw(&t);
    printf("raw: 1\n");
    return 0;
}

Beklenen çıktı

raw: 1

Soru ve cevaplar

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

1 Raw mode parçalarını eşle

Kavram Anlamı
cfmakeraw Raw moda geçirir
ICANON Satır kipi
ECHO Geri yankı
c_lflag Yerel kip

2 Raw modda hangi bayrak kapatılır?

  • O_NONBLOCK
  • F_SETLK
  • STDIN_FILENO
  • ICANON Doğru cevap

Açıklama: ICANON satır kipi bayrağı kapatılır; her tuş anında gelir.

3 cfmakeraw çağrısı

Soru
cfmakeraw(&____);
Cevap
cfmakeraw(&t);

Açıklama: cfmakeraw, t yapısını raw moda getirir.

İleri seviye bölümündeki tüm dersler