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
#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
#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ı
tcgetattr(STDIN_FILENO, &____);
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 |