Uçbirim Kiplerinin Doğru Dürüst Belirtilmesi
Önceki Uçbirim Kipleri Sonraki
Uçbirim Kiplerinin Doğru Dürüst Belirtilmesi
Bir uçbirimin kipini değiştireceğiniz zaman, önce tcgetattr çağrısı ile uçbirim aygıtının o anki kipini öğrenmeli, bu kipi istediğiniz özniteliklerle değiştirdikten sonra sonucu tcsetattr çağrısı ile uçbirime göndermelisiniz.
struct termios yapısını basitçe ilklendirip öznitelikleri istediğiniz gibi değiştirip sonra bunu tcsetattr işleviyle aktarmanız hiç iyi bir yöntem değildir. Yazılımınızın yıllar sonra bu kılavuzda belgelenmemiş üyelerin desteklendiği sistemlerde çalışabileceğini varsaymalısınız. İlgilenmediğiniz yapı üyelerini değiştirmekten kaçınmak en iyi yöntemdir.
Dahası, farklı uçbirim aygıtları farklı kip seçimleri gerektirebilir. Bu bakımdan öznitelikleri bir uçbirimden diğerine körü körüne kopyalamaktan da kaçınmalısınız.
c_iflag, c_oflag ve c_cflag üyelerinde olduğu gibi bir üye bağımsız seçeneklerin bir kolleksiyonunu içeriyorsa üyenin değerini tamamen değiştirmek de kötü olacaktır. Bunu yapmak yerine üyeyi mevcut değerlerle başlatmalı ve ilgisiz seçeneklere dokunmadan sadece yazılımınız için gerekli seçenekleri değiştirmelisiniz.
Bu örnekte struct termios yapısındaki diğer verilere dokunmadan sadece bir seçeneğin (ISTRIP) değiştirilmesi gösterilmiştir:
int
set_istrip (int desc, int value)
{
  struct termios settings;
  int result;

  result = tcgetattr (desc, &settings);
  if (result < 0)
    {
      perror ("tcgetattr'de hata");
      return 0;
    }
  settings.c_iflag &= ~ISTRIP;
  if (value)
    settings.c_iflag |= ISTRIP;
  result = tcsetattr (desc, TCSANOW, &settings);
  if (result < 0)
    {
      perror ("tcsetattr'de hata");
      return 0;
    }
  return 1;
}
Önceki Üst Ana Başlık Sonraki
Uçbirim Kipi İşlevleri Başlangıç Girdi Kipleri
Bir Linux Kitaplığı Sayfası