wordexp Örneği
Önceki Kabuk Usulü Sözcük Yorumlama Sonraki
wordexp Örneği
Bu örnekte wordexp işlevi muhtelif dizgeleri yorumlayıp sonuçlarını birer kabuk komutu olarak kullanmaktadır. Ayrıca, WRDE_APPEND seçeneği ile wordfree işlevinin kullanımı da gösterilmiştir.
int
yorumla_ve_calistir (const char *komut, const char **secenekler)
{
  wordexp_t sonuc;
  pid_t pid
  int durum, i;

  /* Çalıştırılacak komut için dizgeyi yorumlayalım.  */
  switch (wordexp (komut, &sonuc, 0))
    {
    case 0:                     /* Başarılı.  */
      break;
    case WRDE_NOSPACE:
      /* WRDE_NOSPACE hatası varsa, sonuç kısmende olsa
         ayrılmıştır. Onu serbest bırakalım.  */
      wordfree (&sonuc);
    default:                    /* Bazı başka hatalar.  */
      return -1;
    }

  /* Argümanları elde etmek için dizgeyi yorumlayalım.  */
  for (i = 0; secenekler[i] != NULL; i++)
    {
      if (wordexp (secenekler[i], &sonuc, WRDE_APPEND))
        {
          wordfree (&sonuc);
          return -1;
        }
    }

  pid = fork ();
  if (pid == 0)
    {
      /* Burada bir alt süreç oluşturup komutu çalıştırıyoruz. */
      execv (sonuc.we_wordv[0], sonuc.we_wordv);
      exit (EXIT_FAILURE);
    }
  else if (pid < 0)
    /* Çatallama başarısız oldu, durumu raporlayalım.  */
    durum = -1;
  else
    /* Bu üst süreç, alt sürecin bitmesini bekleyecek.  */
    if (waitpid (pid, &status, 0) != pid)
      durum = -1;

  wordfree (&sonuc);
  return durum;
}
Önceki Üst Ana Başlık Sonraki
Sözcük Yorumlama Seçenekleri Başlangıç Yaklaşık (~) Yorumlaması Hakkında
Bir Linux Kitaplığı Sayfası