Frage

Ich habe dieses Programm in C ++:

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

Wenn ich laufen und kompilieren Sie es und geben Sie zum Beispiel „helo“, mein Programm druckt den Fehler:

  "helo" not found.

Kann ich diesen Fehler verhindern angezeigt? Gibt es eine Möglichkeit, die Fehler aus dem Systembefehl zu deaktivieren?

War es hilfreich?

Lösung

Sie können nicht die Art und Weise system zeigt Fehler ändern. C und C ++ setzen sehr wenig bis gar keine Anforderungen an Implementierungen in dieser Hinsicht, so dass große Teile davon nicht spezifiziert bleiben, sie zu erlauben, so flexibel wie möglich zu sein.

Wenn Sie eine genauere Kontrolle wollen, sollten Sie die Funktionen Ihrer Laufzeitbibliothek oder Betriebssystem-Schnittstelle verwenden. Versuchen execvp (siehe man execvp) in Linux / Unix oder der Funktion Createprocess für Windows-Systeme, die das Windows-API verwendet, die große Kontrolle über die Fehlerbehandlung und andere Sachen erlaubt.

Andere Tipps

Sind Sie auf Linux? Versuchen Sie "./hello"

eingeben

Wenn das funktioniert, ist der Grund dafür, dass das aktuelle Verzeichnis ( „“) ist nicht im Suchpfad. Sie müssen zeigen, dass das kompilierte Programm „dort“ im Verzeichnis ist.

Alternativ können Sie wie etwas tun

export PATH = $ PATH:.

Das fügt "" (Aktuelles Verzeichnis) zum Suchpfad.

Wenn Sie auf Fenster sind, versuchen Sie "hello.exe"

Wenn Sie auf Linux sind, können Sie die Fehlerausgabe in die null Gerät versuchen Umleitung?

strcat(buf, "2> /dev/null");
system(buf);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top