Bir Komutun Çalıştırması
Önceki XXVI. Oylum - Süreçler Sonraki
Bir Komutun Çalıştırması
Başka bir yazılımı çalıştırmanın kolay yolu system işlevinin kullanılmasıdır. Bu işlev bir alt yazılımı çalıştırmak için gerekli bütün işi yapar, fakat ayrıntılar üzerindeki denetimi size fazla vermez: başka bir şey yapmadan önce alt yazılım sonlanıncaya kadar beklemeniz gerekir.
int system
(const char *komut)
işlev
Bu işlev komut komutunu bir kabuk komutu olarak çalıştırır. GNU C kütüphanesinde, bir komutu çalıştırmak için her zaman öntanımlı kabuk olan sh kullanılır. Özellikle PATH içinde belirtilen dizinleri arayarak çalıştırılacak yazılımı bulmaya çalışır. Kabuk sürecini oluşturamadıysa dönüş değeri -1, aksi takdirde kabuk sürecinin durumudur. Bu durum kodunun nasıl yorumlanacağı konusunda ayrıntılı bilgi için bkz. Süreç Tamamlama.
Eğer komut argümanı boş gösterici olarak verilirse, dönüş değerinin sıfır olması bir komut işlemcisi olmadığını belirtir.
Bu işlev çok evreli yazılımlar için iptal noktasıdır. Eğer system çağrıldığında bir evre bazı kaynakları (bellek, dosya tanımlayıcısı, semafor veya her hangi başka bir kaynak) ayırırsa bu sorun olur. Evre iptal edilirse bu kaynaklar yazılım sonlanıncaya kadar ayrılmış durumda kalırlar. Bundan kaçınmak için systeme yapılan çağrılar iptal işleyicilerini kullanarak korunmalıdır.
system işlevi stdlib.h başlık dosyası içinde tanımlıdır.
Uyumluluk Bilgisi
Bazı C gerçeklemeleri başka yazılımları çalıştıran bir komut işlemcisine sahip olmayabilir. Komut işlemcisinin olup olmadığını system (NULL) çalıştırarak anlayabilirsiniz; eğer dönüş değeri sıfır değilse, bir komut işlemcisi vardır.
popen ve pclose işlevleri (Bir Alt Sürece Boru Hattı) system işleviyle yakından ilgilidir. Bunlar üst sürecin, çalıştırılan komutun standart girdi ve çıktı kanallarıyla haberleşmesini sağlarlar.
Önceki Üst Ana Başlık Sonraki
XXVI. Oylum - Süreçler Başlangıç Süreç Oluşturma Kavramları
Bir Linux Kitaplığı Sayfası