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)