c shell system programming tutorial with examples
Tento kurz poskytuje podrobný popis volání C ++ Shell nebo system (), které se používá k vyvolání příkazu operačního systému z programu C ++.
Ve světě softwarového programování je většina API operačního systému zaměřena na C. Jazyk C ++ poskytuje přímou podporu pro volání funkcí C z kódu C ++.
Proto se v tomto případě C ++ také stává systémovým programovacím jazykem. C ++ poskytuje příkaz „system ()“ k vyvolání příkazů operačního systému z programu C / C ++.
Jinými slovy můžeme říci, že příkaz system () provede příkaz prostředí C ++. V tomto kurzu se budeme podrobně zabývat provedením příkazu shellu nebo systému ().
=> Prozkoumejte jednoduchou sérii školení C ++ zde.
jaké jsou dvě běžné techniky pro počáteční vyvolání požadavků?
Co se naučíte:
- Systémová volání v C ++
- Pozastavení systému v C ++
- Funkce knihovny systému Vs
- Závěr
- Doporučené čtení
Systémová volání v C ++
Nyní pojďme diskutovat o systémovém volání a jeho podrobnostech s příklady.
Funkční prototyp: int system (příkaz const char *);
Parametry:
command => Řetězec C obsahující příkaz, který má být proveden.
Pokud je předán nulový ukazatel, provede se pouze kontrola příkazového procesoru.
Návratová hodnota: Vrátí hodnotu int. Vrácená hodnota závisí na tom, zda je řetězec ve stylu C zadán jako argument, nebo zda je zadán nulový ukazatel.
- Nulový ukazatel => Pokud je zadán nulový ukazatel, vrátí nenulovou hodnotu, pokud je k dispozici příkazový procesor a jinak nula.
- Zadaný příkaz => Když je zadán příkaz, pak se obvykle vrátí stavový kód, ale vrácená hodnota závisí na implementaci systému a knihovny.
Popis: Systémový příkaz provede příkaz zadaný jako argument. Hodnota vrácená spuštěním příkazu je obvykle závislá na implementaci systému a knihovny. Pokud je místo příkazu předán nulový ukazatel, pak toto volání jednoduše zkontroluje, zda je příkazový procesor k dispozici nebo ne.
Volání vrátí nenulovou hodnotu, pokud je k dispozici příkazový procesor a jinak nula.
Pomocí systému () můžeme spustit téměř jakýkoli příkaz, pokud to operační systém umožňuje. Například, můžeme spustit systém („dir“) nebo systém („ls“) se stejnou lehkostí. Ve skutečnosti můžeme dokonce vyvolat překladač GCC z našeho programu.
co je testování černé skříňky s příkladem
Níže je uvedeno několik příkladů systémových příkazů, které se v C ++ používají k provádění příkazů prostředí C ++.
Příklad 1:
Tento příklad ukazuje ukázku systémového příkazu s nulovým ukazatelem jako argument.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Výstup:

Ve výše uvedeném programu nejprve zkontrolujeme, zda je příkazový procesor k dispozici, předáním null do systémového volání. Pokud je k dispozici příkazový procesor, provedeme příkaz dir. Pokud příkazový procesor není k dispozici, ukončíme program s chybou.
Příklad 2:
Následující příklad ukazuje provedení příkazu ls, kde je výstup směrován do textového souboru „output.txt“. Po provedení volání system () vytiskneme obsah output.txt.
#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(); }
Výstup:

Výstupem výše uvedeného programu je obsah souboru „output.txt“, který není ničím jiným než výstupem příkazu ls.
Příklad 3:
Níže uvedený program C ++ je pokračováním předchozího příkladu. Zde provedeme příkaz ls, který je přesměrován na output.txt pomocí systémového volání. Poté provedeme další systémové volání příkazem „rm“ (remove) k odstranění souboru output.txt.
Poté znovu provedeme příkaz ls a tentokrát přesměrujeme výstup do jiného souboru, tj. Text.txt. Nakonec vytiskneme obsah souboru text.txt.
mýdlové webové služby v otázkách rozhovoru java
#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(); }
Výstup:

Pozastavení systému v C ++
Příkaz systému („pauza“) dočasně zastaví operace, když je spuštěn. Systémové volání („pauza“) závisí na operačním systému a provádí následující kroky:
- Toto volání dočasně pozastaví program a také signalizuje operačnímu systému, aby otevřel shell operačního systému.
- Operační systém přiděluje paměť pro provedení příkazu.
- Poté uvolní paměť, ukončí operační systém a obnoví pozastavený program.
Následující program ukazuje příklad systémového volání („pauza“).
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Výstup:

Jak již bylo zmíněno, volání systému („pauza“) je velmi pomalé a závisí na operačním systému. Kroky uvedené výše je těžké provést.
Systémová volání mohou navíc představovat určitá bezpečnostní rizika. Z tohoto důvodu se obvykle nespoléháme na systémová („pozastavená“) volání v našich programech.
Místo toho můžeme použít cin.get k dosažení stejné funkčnosti jako systém („pauza“), jak je znázorněno v níže uvedeném programu.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Výstup:

Jak je uvedeno výše, můžeme použít cin.get k pozastavení výstupu, dokud nestiskneme nějakou klávesu. Na rozdíl od systému („pauza“) není závislý na operačním systému. Rovněž nedodržuje kroky provedené při spuštění systému („pauza“).
Funkce knihovny systému Vs
Systémová volání jsou závislá na operačním systému. Jsou také velmi pomalé a náročné na zdroje. Funkce knihovny nejsou závislé na operačním systému. Jsou rychlejší a nespotřebovávají příliš mnoho zdrojů ani paměti.
Nejběžnější použití systémových volání je pro systémové („pause“) a systémové („cls“) příkazy. Funkce knihovny jsou integrované funkce, které obsahují funkce související s matematikou, vstupně-výstupními operacemi souborů atd.
Závěr
V tomto výukovém programu C ++ Shell jsme diskutovali o různých systémových funkcích. Viděli jsme příklady předání nulového ukazatele na systémový příkaz, který kontroluje, zda je příkazový procesor k dispozici nebo ne. Podrobně jsme také diskutovali o příkazu systému („pause“) a jeho alternativách.
=> Zkontrolujte VŠECHNY výukové programy pro C ++ zde.
Doporučené čtení
- Shell Seřadit v C ++ s příklady
- Výukový program pro skriptování prostředí Unix s příklady
- Typy smyček Unix Shell: Provádějte smyčku, smyčku, dokud smyčku v Unixu
- Příklady aritmetických a booleovských operátorů Unix Shell Script
- Funkce Unix Shell Script s parametry a návratem
- Pokročilé skriptování prostředí Unix: pole, operátory testování souborů a řetězců, speciální proměnné
- C ++ regex Tutorial: Regulární výrazy v C ++ s příklady