getopt Kullanımı
Önceki getopt Sonraki
getopt Kullanımı
Bu bölümde getopt işlev çağrısının ayrıntıları üzerinde durulacaktır. Bu oluşumları kullanacaksanız, yazılımınıza unistd.h başlık dosyasını dahil etmelisiniz.
int opterr
değişken
Bu değişkenin değeri sıfırdan farklıysa, getopt işlevi bilinmeyen bir seçenek karakteri veya argüman gerektiren bir seçenek için argüman belirtilmediğini saptarsa standart hataya bir hata iletisi basar. Bu değişkene sıfır değerini atarsanız, getopt işlevi standart hataya birşey basmaz ama bir hatayı belirtmek üzere ? karakteri ile döner.
int optopt
değişken
getopt işlevi bilinmeyen bir seçenek karakteri veya argüman gerektiren bir seçenek için argüman belirtilmediğini saptadığında seçenek karakterini bu değişkende saklar. Bunu kendi tanı iletileriniz için kullanabilirsiniz.
int optind
değişken
Bu değişkene getopt tarafından argv dizisinin işlenen elemanından sonraki elemanın indisini koyar. getopt tüm seçenekleri bulduktan sonra, bu değişkeni seçenek olmayan ilk argümanın indisini saptamakta kullanabilirsiniz. Bu değişkenin başlangıç değeri 1'dir.
char *optarg
değişken
Bu değişkene getopt tarafından argüman kabul eden seçeneklerin argümanına gösterici yerleştirilir.
int getopt
(int         argc,
 char      **argv,
 const char *seçenekler)
işlev
argv and argc argümanları ile belirtilen argüman listesindeki sonraki seçenek argümanı ile döner. Normalde bu değerler main işlevinden alınan argümanlardan gelir.
seçenekler argümanı yazılım için geçerli seçenek karakterlerinin belirtildiği bir dizgedir. Bu dizgedeki bir seçenek karakterinden sonra bir iki nokta üstüste (:) varsa bu, o seçeneğin bir argüman gerektirdiğini belirtir. Seçenek karakterinden sonra iki tane iki nokta üstüste (::) varsa bu, o seçeneğin argümanının isteğe bağlı olduğunu belirtir; bu bir GNU oluşumudur.
getopt işlevi seçenek olmayan argv elemanlarından sonraki seçenekler için üç yöntem kullanır. Özel -- argümanı her durumda seçeneklerin sonunu belirtir.
  • Neticede tüm seçenek olmayan argümanların sonda olacağından hareketle, taranan argv içeriğinin kendi aralarında yer değiştirilmesi öntanımlıdır. Bu, seçeneklerin herhangi bir sırada verilebilmesini, bu durumun olabileceği varsayılmamış yazılımlarda bile sağlar.
  • Eğer seçenekler dizgesi bir tire işareti (-) ile başlıyorsa, bu özel olarak ele alınır. Bu durumda, \1 seçenek karakteri ile ilişkiliymiş gibi döndürülecek seçenek olmayan argümanlara izin verilir.
  • POSIX şu davranışı talep eder: İlk seçenek olmayan argüman işlemi durdurur. Bu kip, POSIXLY_CORRECT ortam değişkeni atanarak ya da seçenekler dizgesini artı (+) işareti ile başlatarak seçilebilir.
getopt işlevi sonraki komut satırı seçeneği olan seçenek karakteri ile döner. Artık seçenek argümanı kalmadığında -1 döndürür. Hala seçenek olmayan argümanlar olabilir; bunu sınamak için optind harici değişkenini argc parametresi ile karşılaştırabilirsiniz.
Seçenek bir argümana sahipse, getopt argümanı optarg değişkenine saklayıp döner. optarg değişkeninin değerini sırası geldikçe kopyalamanız gerekmez, çünkü değişkenin değeri üzerine yazılabilen durağan alana gösterici değil, özgün argv dizisine bir göstericidir.
getopt işlevi argv içinde seçenekler ile belirtilmemiş bir seçenek karakteri bulursa ya da bir seçenek argümanı eksikse ? ile döner ve optopt harici değişkenine seçenek karakterini atar. seçenekler dizisinin ilk argümanı bir ikinokta üstüste (:) ise, getopt : yerine eksik seçenek argümanını belirten ? ile döner. Ek olarak, opterr harici değişkeni sıfırdan farklıysa (öntanımlı olarak sıfırdan farklıdır), getopt bir hata iletisi basar.
Önceki Üst Ana Başlık Sonraki
getopt Başlangıç getopt Örneği
Bir Linux Kitaplığı Sayfası