2009-05-28 65 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