2009-05-28 6 views
1

私はMicrosoftの_wspawnv関数を呼び出していますが、errnoを22に設定して-1を返し続けます。 errno.hはこれをEINVALと定義します。 _wspawnvに関するMicrosoftのドキュメントによれば、このコードは、modeパラメータが無効な場合にのみ返されます。最初のパラメータで_P_WAITと_P_NOWAITを呼び出してみましたが、どちらも同じエラーを返します。 なぜMicrosoftの_wspawnvがEINVALを返すのですか?


編集: 1日中離れることでいくつの問題が解決できるかは驚くべきことです。 2番目のパラメータのファイル名に引用符が付いていたことに気付かずにいました。それらを取り出して、問題を解決しました。

ストーリーのモラル - すべてを伝えるためにドキュメントを信頼しないでください。 のいずれかのパラメータが無効である可能性があることを暗示しているにもかかわらず、ドキュメントに疑わしい疑いのある人物が含まれていなかったため、ファイル名を二重チェックするのに多くの時間を費やすことはありませんでした。

+0

このプログラムをコマンドラインから実行すると返される終了コードは何ですか? (コマンドが完了したらecho%ERRORLEVEL%を使用できるはずです)。 – jdigital

答えて

2

は奇妙なことに、documentationも述べている:

を実行の継続が許可された場合、これらの関数はerrnoをEINVALに設定し、-1を返します。新しいプロセスは生成されません。

どのくらい信頼する必要がありますか?

また、EINVALは返されません。 errnoをEINVALに設定します。

+0

それに気付きましてありがとうございます。私はそれを以前に見たと思うし、すべての条件が偽であることを知っていたので、それを却下した。私は戻り値ではなくerrnoのコードについて正しいと思いますが、私の目の前に正確なコードがありません - 後でチェックしなければなりません。 –

+0

私は、この回答をドキュメントに明らかな矛盾があることを指摘したので、この回答を最も参考にしました。競争の欠如も傷ついていませんでした。 –

+0

ここに解決策はありますか?私は同じ問題に直面しています。私は2番目のパラメータで引用符を持っていません。 – Shashi

関連する問題