C++において、system(“pause”)コマンドを使用する
この記事では、C++でのsystem(“pause”)コマンドの使用方法について紹介します。
この記事を読む前に、system(“pause”)コマンドはWindowsシステムでのみ利用可能であることに注意してください。
このため、LinuxやMacのどのマシンからもこれを使用することはできません。
システム()コマンド
「pause」コマンドを実行する前に、まずsystem()がどのような役割を果たすか理解しましょう。
#include <cstdlib>
int system(const char *command);
system()関数は、特定のコマンドを実行するためにオペレーティングシステムに呼び出しを行います。
ヘッダーファイルを含む必要があることに注意してください。
これは、ターミナルを開いてそのコマンドを手動で実行するのと非常に似ています。
たとえば、Linuxの「ls」コマンドを使用したい場合、system(“ls”)を使用することができます。
もしLinux/Macのマシンをお持ちであれば、以下のコードを試してみることができます。
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
// Try the "ls -l" command from your Linux / Mac machine
int ret = system("ls -l > test.txt");
return 0;
}
可能な出力:
以下の文章を日本語で自然に言い換える。
– “I like to eat sushi.”
→ 「私は寿司を食べるのが好きです。」
total 16
-rwxr-xr-x 1 2001 2000 9712 Jun 25 21:11 a.out
-rw-rw-rw- 1 2001 2000 209 Jun 25 21:11 main.cpp
-rw-r--r-- 1 2001 2000 0 Jun 25 21:11 test.txt
system()のできることが少し分かったので、system(“pause”)コマンドを見てみましょう。
C++でsystem(“pause”)コマンドを使用する
これはWindows固有のコマンドで、OSに一時停止プログラムを実行するよう指示するものです。
このプログラムは終了するのを待って、親のC++プログラムの実行を停止します。一時停止プログラムが終了した後に、元のプログラムが続行されます。
Windowsマシンを使用している場合、以下のコードを実行することができます。
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
for (int i=0; i<10; i++) {
cout << "i = " << i << endl;
if (i == 5) {
// Call the pause command
cout << "Calling the pause command\n";
system("pause");
cout << "pause program terminated. Resuming...\n";
}
}
return 0;
}
出力 – Windows システムから
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
Calling the pause command
Press any key to continue . . .
pause program terminated. Resuming...
i = 6
i = 7
i = 8
i = 9
E:\Programs\sample.exe (process 14052) exited with code 0.
ご覧の通り、私たちのif条件 i = 5 の時に、停止コマンドが実行されました。
私たちはエンターキーを押した後、C++プログラムで一時停止していたプログラムを終了し、ループを再開しました!
システムの「一時停止」コマンドのデメリット
system(“pause”)の主な落とし穴は、これがプラットフォーム固有であることです。これはLinux/Macシステムでは機能せず、移植性がありません。
Windowsシステムではこれは一種のハックとして機能しますが、他のシステムでコードを実行しようとすると、このアプローチは簡単にエラーを引き起こす可能性があります。
したがって、私はプログラムを一時停止および再開するためのいくつかの他の代替手段を提案します。たとえば、シグナルハンドラを使用する方法などです。
結論
この記事では、C++でsystem(“pause”)コマンドを使う方法について学びました。同様の内容については、弊社のC++プログラミングのチュートリアルセクションもご覧ください。
参考文献 (さんこうぶんけん)
- cppreference.com page on system() in C++