1

私はC ++でこのプログラムを持っています:

#include <iostream>
using namespace std;
int main()
{
char buf[50];
cin.getline(buf,49);
system(buf);
return 0;
}

実行してコンパイルし、たとえば「helo」と入力すると、プログラムはエラーを出力します。

  "helo" not found.

このエラーが表示されないようにすることはできますか? システムコマンドからエラーを無効にする方法はありますか?

4

3 に答える 3

8

systemエラーの表示方法を変更することはできません。C および C++ では、その点で実装に関する要件はほとんどまたはまったくないため、可能な限り柔軟にするために、その大部分が指定されていないままになっています。

より正確な制御が必要な場合は、ランタイム ライブラリまたはオペレーティング システム インターフェイスの関数を使用する必要があります。linux/unix または Windows システムの CreateProcess 関数で試してくださいexecvp(参照man execvp)。これは、Windows API を使用して、エラー処理やその他のものを細かく制御できます。

于 2009-01-16T19:40:44.440 に答える
4

あなたはLinuxを使っていますか?「./hello」と入力してみてください

これが機能する場合、現在のディレクトリ (".") が検索パスにないことが原因です。コンパイルされたプログラムがディレクトリに「ある」ことを示す必要があります。

または、次のようなこともできます

PATH=$PATH: をエクスポートします。

これにより、「.」が追加されます。(現在のディレクトリ) を検索パスに追加します。

Windows を使用している場合は、"hello.exe" を試してください。

于 2009-01-16T19:21:39.953 に答える
2

Linux を使用している場合は、エラー出力をnullデバイスにリダイレクトしてみてください。

strcat(buf, "2> /dev/null");
system(buf);
于 2009-01-16T20:07:02.687 に答える