Was soll COMSPEC-und PATH-Umgebungsvariablen sein, suchen Sie die Befehls-interpreter, mit system()?

Sind das OS (XP) Umwelt-Variablen, die gleich verwendet, in einem Prozess ausgeführt wird, der von visual studio .NET C++?

Scheint es der Kommando-interpreter nicht gefunden wird:

Bei der Verwendung von NULL als Sie den Befehl, system() gibt 0 zurück und mit Befehl - ENOENT Command interpreter cannot be found.

In windows - (System->Umgebungsvariablen), VERWEISEN enthält den Pfad zu cmd.exe

PFAD nicht.

Was soll WEG sein?

Andere als diese, nicht sicher, warum Sie es nicht finden können, den Dolmetscher.

Anregungen werden geschätzt. Danke.

  if( system("tail -500 log.txt") == -1)
  {
      //Error calling tail.exe on log 
      //errno is a system macro that expands int returning
      //the last error. strerror() converts the error to it's
      //corresponding error message. 
      printf("Error calling tail.exe with system(): %s",strerror( errno ));

  }

EDIT1

Ein Schritt in system() argv[0] = _tgetenv(_T("COMSPEC"));gibt ein Ungültiger Zeiger. Diese ist eine ausführbare Datei für cgi, der COMPSEC ist nicht richtig eingestellt oder übernommen werden, die aus der OS.

Ich habe jetzt festlegen von VERWEISEN, bevor der Prozess gestartet wird und die Verwendung von CreateProcess() wie in Beispiel 2

Jedoch, erstellen Prozess noch immer 0 zurückgeben? Immer näher. Siehe Probleme mit dieser? Danke.

 if (! SetEnvironmentVariable("COMSPEC", "C:\\WINDOWS\\system32\\cmd.exe") )
 {
    printf("SetEnvironmentVariable failed (%d)\n", GetLastError());         
 }

 //r = system("dir c:\\");
 r = CreateProcess("dir.exe", NULL, NULL, NULL, TRUE, NULL, 
    NULL,     //inherit parent's environment 
    NULL, &si, &pi);

EDIT 2

SetEnvironmentVariable() hat nicht funktioniert. Allerdings putenv tut.

_putenv( "COMSPEC=C:\\WINDOWS\\system32\\cmd.exe" ); //C4996

Nicht sicher, was der Unterschied ist...?

Nun, dass das env-var gesetzt ist, wird jede Anfrage auf die cgi-app aus dem browser bietet die option zum speichern der cgi.exe statt es auszuführen.. Nicht sicher, warum sich das geändert hat, basierend auf dieser env-var?

InformationsquelleAutor T.T.T. | 2010-02-16
Schreibe einen Kommentar