c shell system programming tutorial with examples
このチュートリアルでは、C ++プログラムからオペレーティングシステムコマンドを呼び出すために使用されるC ++シェルまたはシステム()呼び出しについて詳しく説明します。
ソフトウェアプログラミングの世界では、ほとんどのオペレーティングシステムAPIはCを対象としています。C++言語は、C ++コードからC関数を呼び出すための直接サポートを提供します。
したがって、この場合、C ++もシステムプログラミング言語になります。 C ++は、C / C ++プログラムからオペレーティングシステムコマンドを呼び出すための「system()」コマンドを提供します。
つまり、system()コマンドはC ++シェルコマンドを実行していると言えます。このチュートリアルでは、シェルコマンドまたはシステム()の実行について詳しく説明します。
=> ここでシンプルなC ++トレーニングシリーズをご覧ください。
学習内容:
C ++システムコール
それでは、システムコールとその詳細について例を挙げて説明しましょう。
関数プロトタイプ: intシステム(const char *コマンド);
パラメーター:
command =>実行するコマンドを含むC文字列。
ヌルポインタが渡された場合、コマンドプロセッサのチェックのみが実行されます。
戻り値: int値を返します。返される値は、Cスタイルの文字列が引数として指定されているかどうか、またはnullポインタが指定されているかどうかによって異なります。
- ヌルポインタ=> nullポインターが指定されている場合、コマンドプロセッサーが使用可能な場合はゼロ以外の値を返し、それ以外の場合はゼロを返します。
- 指定されたコマンド => コマンドを指定すると、通常はステータスコードが返されますが、返される値はシステムとライブラリの実装によって異なります。
説明: システムコマンドは、引数として指定されたコマンドを実行します。コマンドの実行によって返される値は、通常、システムとライブラリの実装に依存します。コマンドの代わりにnullポインターが渡された場合、この呼び出しは、コマンドプロセッサーが使用可能かどうかを確認するだけです。
コマンドプロセッサが使用可能な場合、呼び出しはゼロ以外の値を返し、それ以外の場合はゼロを返します。
system()を使用すると、オペレーティングシステムで許可されている限り、ほとんどすべてのコマンドを実行できます。 例えば、 システム(「dir」)またはシステム(「ls」)を同じように簡単に実行できます。実際、プログラムからGCCコンパイラを呼び出すこともできます。
ビッグデータ分析で使用されるツール
以下に、C ++でC ++シェルコマンドを実行するために使用されるシステムコマンドの例をいくつか示します。
例1:
この例は、引数としてNULLポインターを使用したシステムコマンドのデモンストレーションを示しています。
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< 出力:

上記のプログラムでは、最初にシステムコールにnullを渡して、コマンドプロセッサが使用可能かどうかを確認します。コマンドプロセッサが使用可能な場合は、dirコマンドを実行します。コマンドプロセッサが使用できない場合は、失敗してプログラムを終了します。
例2:
次の例は、出力がテキストファイル「output.txt」にパイプされるlsコマンドの実行を示しています。 system()呼び出しが実行された後、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(); }
出力:

上記のプログラムの出力は、lsコマンドの出力に他ならないファイル「output.txt」の内容です。
例3:
以下のC ++プログラムは、前の例の続きです。ここでは、システムコールを使用してoutput.txtにリダイレクトされるlsコマンドを実行します。次に、「rm」(削除)コマンドを使用して別のシステムコールを実行し、ファイルoutput.txtを削除します。
この後、もう一度lsコマンドを実行し、今度は出力を別のファイル、つまりtext.txtにリダイレクトします。最後に、text.txtファイルの内容を印刷します。
最高のマルウェア除去プログラムは何ですか
#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(); }
出力:

C ++システムの一時停止
システム(「一時停止」)コマンドは、実行時に操作を一時的に停止します。システム(「一時停止」)呼び出しはオペレーティングシステムに依存し、次の手順を実行します。
- この呼び出しは、プログラムを一時的に中断し、オペレーティングシステムにオペレーティングシステムシェルを開くように通知します。
- オペレーティングシステムは、コマンドを実行するためのメモリを割り当てます。
- 次に、メモリの割り当てを解除し、オペレーティングシステムを終了して、中断されたプログラムを再開します。
次のプログラムは、システム(「一時停止」)呼び出しの例を示しています。
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
出力:

すでに述べたように、システム(「一時停止」)呼び出しは非常に遅く、オペレーティングシステムに依存します。上記の手順は実行するのが大変です。
さらに、システムコールはセキュリティ上のリスクをもたらす可能性もあります。したがって、通常、プログラムのシステム呼び出し(「一時停止」)に依存しません。
代わりに、cin.getを使用して、以下のプログラムに示すように、システムと同じ機能(「一時停止」)を実現できます。
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
出力:

上に示したように、cin.getを使用して、キーを押すまで出力を一時停止できます。システムとは異なり(「一時停止」)、オペレーティングシステムに依存しません。また、システムの実行時に実行される手順(「一時停止」)にも従いません。
システム対ライブラリ関数
システムコールはオペレーティングシステムに依存します。また、リソースが非常に遅く、重いです。ライブラリ関数はOSに依存しません。それらはより高速で、あまり多くのリソースやメモリを消費しません。
システムコールの最も一般的な使用法は、システム(「一時停止」)およびシステム(「cls」)コマンドです。ライブラリ関数は、数学、ファイルI / Oなどに関連する関数を含む組み込み関数です。
結論
このC ++シェルのチュートリアルでは、さまざまなシステム機能について説明しました。コマンドプロセッサが使用可能かどうかをチェックするシステムコマンドにnullポインタを渡す例を見ました。また、システム(「一時停止」)コマンドとその代替コマンドについても詳しく説明しました。
=> ここですべてのC ++チュートリアルを確認してください。
推奨読書