1

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


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

話の教訓-すべてを伝えるためのドキュメントを信用しないでください。エラーコードがパラメータが無効である可能性があること示唆していても、ドキュメントに疑わしいものとしてリストされていないため、ファイル名を再確認するのに多くの時間を費やしませんでした。

4

1 に答える 1

2

奇妙なことに、ドキュメントには次のようにも記載されています。

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

どれだけ信頼すべきですか?

また、EINVALを返すことは想定されていません。errnoをEINVALに設定します。

于 2009-05-28T23:51:13.660 に答える