CodeBlanks Logo Icon CodeBlanks

termios

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

termios ile terminal yapılandırmasını öğrenirsin.

termios nedir?

termios, POSIX'in terminal ayar yapıdır. struct termios, <termios.h> başlığında tanımlanır; terminalın girdi işleme, çıktı işleme ve yerel kip ayarlarını tutar. tcgetattr(fd, &t) ile mevcut ayarları okur, tcsetattr(fd, TCSANOW, &t) ile yeni ayarları uygularsın.

Önemli alanlar: c_lflag yerel kip (ör. ICANON satır kipini açar), c_oflag çıktı kipi, c_iflag girdi kipi. STDIN_FILENO genelde terminal tanıtıcıdır. Eğer tanıtıcı bir terminal değilse tcgetattr -1 döner; bu yüzden testlerde statik çıktı vermek güvenlidir.

tcgetattr ile okuma

tcgetattr(STDIN_FILENO, &t) mevcut terminal ayarlarını struct termios t yapısına kopyalar. Bu çağrıyı değişiklikten önce yapmalısın; aksi halde orijinal ayarları kaybedersin.

Test için çağrı sonrası printf("termios okundu\n") yazdırabilirsin. Eğer STDIN_FILENO bir terminal değilse (ör. test ortamında) tcgetattr başarısız olur; ama yine de printf çalışır. Bu yüzden çıktı deterministiktir. Gerçek uygulamada isatty(STDIN_FILENO) ile terminal olup olmadığını denetleyip buna göre davranırsın.

Uygulama Terminal ayarlarını oku

struct termios t; tanımla. tcgetattr(STDIN_FILENO, &t); ile ayarları oku. printf("termios okundu\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
// ayarları oku
// okundu 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);
    printf("termios okundu\n");
    return 0;
}

Beklenen çıktı

termios okundu

Soru ve cevaplar

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

1 termios yapısı hangi başlıkta tanımlıdır?

  • stdlib.h
  • stdio.h
  • termios.h Doğru cevap
  • math.h

Açıklama: struct termios, termios.h başlığında tanımlıdır.

2 tcgetattr çağrısı

Soru
tcgetattr(STDIN_FILENO, &____);
Cevap
tcgetattr(STDIN_FILENO, &t);

Açıklama: tcgetattr, t yapısının adresini alır ve ayarları doldurur.

3 termios parçalarını eşle

Kavram Anlamı
tcgetattr Ayarları okur
tcsetattr Ayarları uygular
c_lflag Yerel kip
ICANON Satır kipi

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