2009-05-28 40 views
1

我打電話給微軟的_wspawnv函數,它將errno設置爲22時返回-1; errno.h將其定義爲EINVAL。根據微軟關於_wspawnv的文檔,只有在參數mode無效的情況下才能返回該代碼。我試着用_P_WAIT和_P_NOWAIT在第一個參數中調用它,並且都返回相同的錯誤。 爲什麼微軟的_wspawnv返回EINVAL?


編輯:令人驚異的是,離開一天後可以解決多少問題。我花了很長時間才意識到第二個參數中的文件名引用了它。把它們拿出來,問題解決了。

道德故事 - 不要相信文檔告訴你所有的事情。我沒有花太多時間仔細檢查文件名,因爲文檔沒有列出它作爲可能的嫌疑,儘管錯誤代碼暗示任何參數可能是無效的。

+0

如果從命令行運行此程序,返回的退出代碼是什麼? (命令完成後,您應該能夠使用echo%ERRORLEVEL%)。 – jdigital 2009-05-28 23:45:27

回答

2

奇怪的是,documentation還指出:

如果執行允許繼續,這些功能設置errno爲EINVAL,並返回-1。沒有新的過程產生。

應該信任多少?

此外,它不應該返回EINVAL。它將errno設置爲EINVAL。

+0

感謝您的注意。我想我早些時候看到它,並駁回它,因爲我知道所有的條件都是錯誤的。我也認爲你是正確的代碼在errno而不是返回值,但我現在沒有確切的代碼在我面前 - 我將不得不稍後檢查。 – 2009-05-29 00:43:44

相關問題