2009-05-28 5 views
1

Ich rufe Microsofts _wspawnv-Funktion auf, und es gibt immer -1 zurück, wobei errno auf 22 gesetzt ist; errno.h definiert dies als EINVAL. Laut Microsoft-Dokumentation für _wspawnv sollte dieser Code nur zurückgegeben werden, wenn der Parameter mode ungültig ist. Ich habe versucht, es mit _P_WAIT und _P_NOWAIT im ersten Parameter aufzurufen, und beide geben den gleichen Fehler zurück. Warum gibt Microsoft _wspawnv EINVAL zurück?


Bearbeiten: Es ist erstaunlich, wie viele Probleme gelöst werden können, indem Sie für einen Tag weggehen. Es dauerte nicht lange, bis ich erkannte, dass der Dateiname im zweiten Parameter in Anführungszeichen gesetzt war. Nahm sie heraus, Problem gelöst.

Moral der Geschichte - traue der Dokumentation nicht, dir alles zu erzählen. Ich habe nicht viel Zeit damit verbracht, den Dateinamen zu überprüfen, weil die Dokumentation ihn nicht als möglichen Verdächtigen aufgelistet hat, obwohl der Fehlercode implizierte, dass irgendein Parameter ungültig sein könnte.

+0

Was ist der Exit-Code, der zurückgegeben wird, wenn Sie dieses Programm über die Befehlszeile ausführen? (Nach Abschluss des Befehls sollten Sie echo% ERRORLEVEL% verwenden können). – jdigital

Antwort

2

Merkwürdig ist, dass die documentation auch heißt:

Wenn die Ausführung fortgesetzt wird, werden diese Funktionen eingestellt errno auf EINVAL und -1 zurück. Kein neuer Prozess wird erzeugt.

Wie viel davon sollte vertraut werden?

Außerdem soll es nicht EINVAL zurückgeben. Es setzt ERNO auf EINVAL.

+0

Danke, dass Sie das bemerkt haben. Ich glaube, ich habe es früher gesehen und es entlassen, weil ich wusste, dass alle Bedingungen falsch waren. Ich denke auch, dass Sie Recht haben, dass der Code in errno ist, anstatt einen Rückgabewert, aber ich habe gerade nicht den genauen Code vor mir - ich muss später nachsehen. –

+0

Ich habe diese Antwort als die hilfreichste akzeptiert, da sie auf den offensichtlichen Widerspruch in der Dokumentation hingewiesen hat. Der Mangel an Wettbewerb hat auch nicht geschadet. –

+0

Was ist die Lösung hier? Ich stehe vor dem gleichen Problem. Ich habe keine Anführungszeichen im zweiten Parameter. – Shashi

Verwandte Themen