c shell system programming tutorial with examples
Bu öğretici, bir C ++ programından işletim sistemi komutunu çağırmak için kullanılan C ++ Kabuğu veya system () çağrısının ayrıntılı bir hesabını verir.
Yazılım programlama dünyasında, işletim sistemi API'lerinin çoğu C'yi hedeflemektedir. C ++ dili, C ++ kodundan C işlevlerinin çağrılması için doğrudan destek sağlar.
Dolayısıyla, bu durumda, C ++ da bir sistem programlama dili haline gelir. C ++, C / C ++ programından işletim sistemi komutlarını çağırmak için bir 'system ()' komutu sağlar.
Diğer bir deyişle system () komutunun bir C ++ kabuk komutunu çalıştırdığını söyleyebiliriz. Bu eğitimde, kabuk komutunun veya sistemin () yürütülmesini ayrıntılı olarak tartışacağız.
=> Basit C ++ Eğitim Serisini Buradan Keşfedin.
pvp için en iyi vay özel sunucu
Ne öğreneceksin:
- C ++ Sistem Çağrıları
- C ++ Sistem Duraklatması
- Sistem Vs Kitaplığı İşlevleri
- Sonuç
- Önerilen Kaynaklar
C ++ Sistem Çağrıları
Şimdi Sistem çağrısını ve ayrıntılarını örneklerle tartışalım.
İşlev Prototipi: int sistem (const char * komutu);
Parametreler:
command => Yürütülecek komutu içeren bir C-string.
Boş gösterici geçilirse, yalnızca komut işlemcisi için bir kontrol yapılır.
Geri dönüş değeri: Bir int değeri döndürür. Döndürülen değer, C tarzı dizenin bir bağımsız değişken olarak belirtilip belirtilmediğine veya bir boş gösterici belirtilip belirtilmediğine bağlıdır.
- Boş İşaretçi => Boş gösterici belirtilirse, komut işlemcisi varsa sıfır olmayan bir değer, aksi takdirde sıfır döndürür.
- Belirtilen komut => Komut belirtildiğinde, genellikle durum kodu döndürülür, ancak döndürülen değer sistem ve kitaplık uygulamasına bağlıdır.
Açıklama: Sistem komutu, bağımsız değişken olarak sağlanan bir komutu yürütür. Komutun çalıştırılmasıyla döndürülen değer genellikle sistem ve kitaplık uygulamasına bağlıdır. Bir komut yerine boş gösterici iletilirse, bu çağrı basitçe komut işlemcisinin kullanılabilir olup olmadığını kontrol eder.
Komut işlemcisi mevcutsa çağrı sıfırdan farklı bir değer, aksi takdirde sıfır döndürür.
System () kullanarak, işletim sisteminin izin vermesi koşuluyla hemen hemen her komutu çalıştırabiliriz. Örneğin, sistemi ('dir') veya sistemi ('ls') aynı kolaylıkla çalıştırabiliriz. Aslında, GCC derleyicisini programımızdan bile çağırabiliriz.
Aşağıda, C ++ kabuk komutlarını yürütmek için C ++ 'da kullanılan birkaç sistem komutu örneği listelenmiştir.
Örnek 1:
Bu örnek, argüman olarak boş gösterici ile sistem komutu gösterimini gösterir.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Çıktı:

Yukarıdaki programda, önce sistem çağrısına null ileterek komut işlemcisinin kullanılabilir olup olmadığını kontrol ediyoruz. Komut işlemcisi mevcutsa, dir komutunu çalıştırırız. Komut işlemcisi mevcut değilse, programdan bir arıza ile çıkıyoruz.
Örnek 2:
Aşağıdaki örnek, çıktının 'output.txt' metin dosyasına yönlendirildiği ls komutunun yürütülmesini gösterir. System () çağrısı gerçekleştirildikten sonra output.txt'nin içeriğini yazdırırız.
web uygulaması için test senaryoları nasıl yazılır
#include #include #include int main() { std::system('ls -l >output.txt'); // execute the UNIX command 'ls -l >test.txt' std::cout << std::ifstream('output.txt').rdbuf(); }
Çıktı:

Yukarıdaki programın çıktısı, ls komutunun çıktısından başka bir şey olmayan 'output.txt' dosyasının içeriğidir.
Örnek 3:
Aşağıdaki C ++ programı önceki örneğin devamı niteliğindedir. Burada, bir sistem çağrısı kullanarak output.txt'ye yönlendirilen ls komutunu çalıştırıyoruz. Daha sonra output.txt dosyasını kaldırmak için “rm” (remove) komutuyla başka bir sistem çağrısı yürütürüz.
Bundan sonra, tekrar ls komutunu çalıştırıyoruz ve bu sefer çıktıyı başka bir dosyaya, yani text.txt'ye yönlendiriyoruz. Son olarak text.txt dosyasının içeriğini yazdırıyoruz.
#include #include #include using namespace std; int main() { // execute the UNIX command 'ls -l >output.txt' system('ls -l >output.txt'); cout << ifstream('output.txt').rdbuf(); // execute the UNIX command 'rm output.txt' system('rm output.txt'); cout<<'removed output.txt'<text.txt' cout<<'ls after removing output.txt & creating text.txt'<text.txt'); cout << ifstream('text.txt').rdbuf(); }
Çıktı:

C ++ Sistem Duraklatması
Sistem ('duraklat') komutu yürütüldüğünde işlemleri geçici olarak durdurur. Sistem ('duraklatma') çağrısı İşletim sistemine bağlıdır ve aşağıdaki adımları gerçekleştirir:
- Bu çağrı, programı geçici olarak askıya alır ve ayrıca işletim sistemine işletim sistemi kabuğunu açması için sinyal gönderir.
- İşletim sistemi, komutun çalıştırılması için belleği ayırır.
- Daha sonra belleği serbest bırakır, işletim sisteminden çıkar ve askıya alınan programı sürdürür.
Aşağıdaki program, bir sistem ('duraklatma') çağrısı örneğini göstermektedir.
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Çıktı:

Daha önce belirtildiği gibi, sistem ('duraklatma') çağrısı çok yavaştır ve işletim sistemine bağlıdır. Yukarıda belirtilen adımların uygulanması ağırdır.
Ek olarak, sistem çağrıları da bazı güvenlik riskleri oluşturabilir. Bu nedenle genellikle programlarımızdaki sistem ('duraklatma') çağrılarına güvenmiyoruz.
Bunun yerine, aşağıdaki programda gösterildiği gibi bir sistemle aynı işlevselliği elde etmek için cin.get'i kullanabiliriz ('duraklat').
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Çıktı:

Yukarıda gösterildiği gibi, bazı tuşlara basana kadar çıkışı duraklatmak için cin.get kullanabiliriz. Sistemin aksine ('duraklama') işletim sistemine bağlı değildir. Ayrıca sistemi çalıştırdığımızda ('duraklat') gerçekleştirilen adımları da takip etmez.
Sistem Vs Kitaplığı İşlevleri
Sistem çağrıları işletim sistemine bağlıdır. Ayrıca kaynakları çok yavaş ve ağırdırlar. Kitaplık işlevleri işletim sistemine bağlı değildir. Daha hızlıdırlar ve çok fazla kaynak veya bellek tüketmezler.
Sistem çağrılarının en yaygın kullanımları, sistem ('duraklat') ve sistem ('cls') komutları içindir. Kitaplık işlevleri, matematik, dosya G / Ç vb. İle ilgili işlevleri içeren yerleşik işlevlerdir.
Sonuç
Bu C ++ Kabuk eğitiminde, çeşitli sistem işlevlerini tartıştık. Komut işlemcisinin kullanılabilir olup olmadığını kontrol eden sistem komutuna boş gösterici geçirme örnekleri gördük. Sistem (“duraklat”) komutunu ve alternatiflerini de detaylı olarak tartıştık.
=> TÜM C ++ Öğreticilerini Buradan Kontrol Edin.
Önerilen Kaynaklar
- Örneklerle C ++ 'da Kabuk Sıralama
- Örneklerle Unix Shell Scripting Eğitimi
- Unix Kabuk Döngü Türleri: Unix'te Döngüye Kadar Döngüde Yapın
- Unix Shell Script Aritmetik ve Boole Operatör Örnekleri
- Parametreli ve Dönüşlü Unix Shell Komut Dosyası İşlevleri
- Gelişmiş Unix Kabuk Komut Dosyası: Diziler, Dosya ve Dize Test Operatörleri, Özel Değişkenler
- C ++ regex Eğitimi: C ++ 'da Örneklerle Normal İfadeler