Mustafa Kemal Üniversitesi Bilgisayar Mühendisliği Bölümü Ders Materyal Ve Notları

Sponsor

17 Mart 2014 Pazartesi

Komut Satırı Parse Etme

Posted by samgar at 07:36 0 Comments
Giriş
Verilen parametreleri parse() etmek işlemi run-time tarafından yapılır. Anlamlandırma işlemi ise uygulama tarafından gerçekleştirilir. Konuyla ilgili olarak Main metodu başlıklı yazıya bakabilirsiniz.

C
argv ile gelen ilk parametre uygulamanın ismidir. Örnek'te "add_fractions 1/2 2/3" şeklinde çağırılan bir uygulama şu değerleri alır.

shell glob veya * wildcard
Shell ile * verilerek çağırılan bir program bulunduğu dizindeki tüm dosyaları parametre olarak alır.
./myprogram '*' şeklinde çağırılırsa parametre olarak * karakterini alır.

GNU
GNU ile getopt fonksiyonu kullanılarak komut satırı parse edilebilir. getopt argc, argv ve parse edilmesi istenen seçenekleri alır. Çağrı sonunda global bazı değişkenlere değer atar. Bu global değişkenler
optargoptindoptopt 
isimlerine sahiptirler.  getopt -1 dönünceye kadar tekrar tekrar çağrılabilir.
Örnek:

#include <unistd.h>
//Process cmdline opts. Parametre alan seçeneklerden sonra : kullanılmış
char *shortOpts = "hi:e:p:";//-h -i [IP Adresi] p [Port] -e [Ethernet Adı] şeklinde kullanılabilir
int   getoptRet;
while(-1 != (getoptRet = getopt(argc, argv, shortOpts)))
{
    switch(getoptRet) //Seçenek getoptRet ile saklanır
        {
            case 'i':
                inInAddr.sin_addr.s_addr = inet_addr(optarg);//Seçeneğin değeri optarg ile saklanır
                break;
            case 'p':
                inInAddr.sin_port        = htons(atoi(optarg));
                break;
            case 'h':
            case '?':
            default:
                Usage(argv[0]);
                goto normal_exit;
                break;
        }
    }
}
optstring



Apache Commons
CommandLineParser arayüzünden türeyen sınıflar bir CommandLine sınıfı üretiyorlar.
BasicParser sınıfı
Örnek:
GnuParser sınıfı
Bu sınıf kullanımdan kalktı. DefaultParser'ın kullanılması gerekir.

PosixParser sınıfı
Bu sınıf kullanımdan kalktı. DefaultParser'ın kullanılması gerekir.
Örnek:
DefaultParser  sınıfı
Bir başka örnekte ise DefaultParser kullanılmış.
Options sınıfı
Bu sınıf okunan dizinin nasıl ayrıştırılacağı bilgisini tutan bir listedir.  Listede Option nesneleri bulunur.
addOption
Örnek:
"-b 2" şeklinde bir parametrenin girilmesi gerektiğini belirtir.
Options options = new Options();
options.addOption("b", true, "some message");

Option sınıfı
setArgs 
Kaç tane kelime okunacağını belirtir. Örnek:
 

CommandLine sınıfı
Her okuma işlemi sonucunda bu sınıf üretilir.
getArgs
Parse edilen parametreleri String[] şeklinde alabilmemizi sağlar. Örnek:
for(String arg : commandline.getArgs()){...}
boost
Kullanılan ana sınıflar options_description, parsed_options ve variables_map. Örnek burada bulunabilir.

options_description sınıfı
add_options
Bu metod ile yeni bir seçenek eklenir. Örnek:

<< metodu
Eğer istenirse bu sınıf string'e çevirilebilir. Örnek:

variables_map
Bu sınıf parse sonucu aynı bir map şeklinde kullanabilmemizi sağlar.

count metodu
Aranılan seçeneğin girilip girilmediğini kontrol edebilmemizi sağlar.


parsed_options sınıfı
Bu sınıf parse işleminin sonucunu saklar.

boost:program_options::store
Bu metod ile verilen komut satırı parse edilerek variables_map sınıfına doldurulur.

boost:program_options::notify
Bu metod ile variables_map sınıfındaki değerler, options_description sınıfına bağlanmış olan değişkenlere atanır. Örnek:

QT

QCoreApplication parse işlemini biraz daha kolaylaştırıyor.

int main (int argc, char* argv[])
{

    QCoreApplication app(argc, argv);
    QStringList arglist = app.arguments();
}


Bu Yayını Paylaş

Takipçi Ol

Mail adresinizi kaydedelim ilk sizin haberiniz olsun.

0 yorum:

Sponsor

Yazılarım Korunuyor

Yandex Metrica

Yandex.Metrica

Toplam Sayfa Görüntüleme Sayısı

back to top