Provided by: manpages-tr_1.0.5.1-2_all bug

İSİM

       system - bir kabuk komutunu çalıştırır

KULLANIM

       #include <stdlib.h>

       int system (const char *dizge);

AÇIKLAMA

       system()   dizge  ile  belirtilen  bir  komutu,  /bin/sh -c dizge çağrısıyla çalıştırır ve
       komutun çalışması  bittikten  sonra  geri  döner.  Komutun  çalışması  esnasında,  SIGCHLD
       engellenir, SIGINT ve SIGOUT göz ardı edilir.

DÖNÜŞ DEĞERİ

       Herhangi  bir  hatada   -1  döner (fork başarısız olmuş gibi), aksi takdirde komutun dönüş
       durumu döner. Bu sonuncu dönüş durumu wait(2) de belirtilen biçimde olur.  Bundan  dolayı,
       komutun   çıkış   kodu    WEXITSTATUS(durum)   olacaktır.    /bin/sh'ın  çalıştırılamadığı
       durumlarda, çıkış durumu, exit(127) yapan komutun durumu olacaktır.

       Şayet dizge değeri NULL ise ve kabuk uygunsa, system() sıfırsan farklı bir değer döndürür;
       uygun değilse sıfır döndürür.

       system(), çocuk süreçlerden hiçbirinin bekleme durumunu etkilemez.

UYUMLULUK

       ANSI C, POSIX.2, BSD 4.3

NOTLAR

       Bahsedildiği  gibi;  system(),  SIGINT  ve  SIGQUIT sinyalini yoksayar.  Bu, uygulamaların
       kendi çocuklarının çıkış durumlarını kontrol etmedikleri takdirde aşağıdaki örnekteki gibi
       durdurulamaz bir döngüden sürekli çağrılan uygulamalara sebep olabilir.

       while(birşey) {
         int donen = system("foo");

         if (WIFSIGNALED(donen) &&
             (WTERMSIG(donen) == SIGINT || WTERMSIG(donen) == SIGQUIT))
                 break;
       }

       Sistem    bütünlüğünü    bozmak   için,   bazı   çevre   değişkenleri   tuhaf   değerlerle
       kullanılabileceğinden, system()'i suid veya sgid yetkileri olan bir yazılımda kullanmayın.
       Onun  yerine  exec(3)  ailesine  ait  işlevleri  kullanın,  ama  execlp(3)  veya execvp(3)
       işlevleri hariç. /bin/sh'ın bash'ın 2. sürümü olduğu sistemlerde, bash başlatma  sırasında
       yetkileri  tutacağından  system(),  suid  veya  sgid  hakları  olan  yazılımlardan  düzgün
       çalışmayacaktır. (Debian sh olarak çağrıldığında  bunu  yapmayan  değiştirilmiş  bir  bash
       kullanır.)

       /bin/sh'ın   kullanılabilirliği  aslında  kontrol  edilmez;  Daima  kullanılabilir  olduğu
       varsayılır. ISO C  kontrolün yapılmasını isterse de POSIX.2 kabuktan  geri  dönen  değerin
       daima sıfırdan farklı olması gerektiğini kabul eder (çünkü kabuk olmayan bir sistem uyumlu
       değildir ve uyum için kabuğun eklenmiş olması gerekmektedir).

       Kabuk komutu için 127 döndürmek mümkündür,  bu  nedenle  kod,  execve()  çağrısının   hata
       verdiğinin, kesin bir kanıtı sayılamaz.

İLGİLİ BELGELER

       sh(1), signal(2), wait(2), exec(3).

ÇEVİREN

       Yalçın Kolukısa <yalcink01 (at) yahoo.com>, Kasım 2003

                                          23 Eylül 2001                                 system(3)