Özet - Terminal I/O
- C kursu
- İleri seviye
- Ders 48/83
- 5 dk
termios ve ANSI'yi birleştirerek bir terminal uygulaması yazarsın.
Terminal I/O özeti
Terminal I/O araç setini öğrendin: termios ile ayar okuma, raw mode ile anlık tuş, non-blocking ile beklemez okuma, ANSI ile renk ve imleç, ioctl ile boyut. Bunlar etkileşimli uygulamaların temelidir.
Bu özette termios, fcntl ve ioctl'i birleştirip bir terminal hazırlık uygulaması yazacağız. Hepsini bir arada kullanmak, gerçek CLI araçlarının nasıl kurulduğunu gösterir. Çıktı deterministiktir: sabit bir hazır mesajı yazdırırız.
Uygulama Terminal hazırla
struct termios t; tcgetattr(STDIN_FILENO, &t); ile ayarları oku. fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK); ile non-blocking moda geç. struct winsize ws; ws.ws_row = 24; ws.ws_col = 80; tanımla ve (void)ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws); ile çağır. printf("terminal hazır\n"); ile yazdır.
Başlangıç kodu
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
// terminal ayarlarını oku
// non-blocking moda geç
// boyut yapısını hazırla ve ioctl çağır, hazır yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
int main(void) {
struct termios t;
tcgetattr(STDIN_FILENO, &t);
fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
struct winsize ws;
ws.ws_row = 24;
ws.ws_col = 80;
(void)ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws);
printf("terminal hazır\n");
return 0;
}Beklenen çıktı
terminal hazır
Sonraki adımlar
Terminal I/O'yu tamamladın. Bu temeller, metin editörlerinin, kabukların ve TUI uygulamalarının çekirdeğidir. termios + raw mode ile tuş tuş girdi, ANSI ile renkler, ioctl ile boyut alırsın.
Sonraki konular: dinamik yükleme ile eklenti sistemleri ve kriptografi ile güvenlik. Bunlar terminal uygulamalarıyla birleşip güçlü CLI araçları oluşturur.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Renkli çıktı için hangi araç kullanılır?
- flock
- fcntl
- shmget
- ANSI escape Doğru cevap
Açıklama: ANSI kaçış dizileri renk ve biçim için kullanılır.
2 Terminal araçlarını eşle
| Kavram | Anlamı |
|---|---|
termios |
Ayar okuma |
cfmakeraw |
Raw mode |
O_NONBLOCK |
Beklemez |
ioctl |
Boyut |