views:

80

answers:

1

I'm calling Microsoft's _wspawnv function, and it keeps returning -1 with errno set to 22; errno.h defines this as EINVAL. According to Microsoft's documentation for _wspawnv, this code should only be returned if the mode parameter is invalid. I've tried calling it with _P_WAIT and _P_NOWAIT in the first parameter, and both return the same error.


Edit: It's amazing how many problems can be solved by going away for a day. It didn't take me long to realize that the filename in the second parameter had quotes around it. Took them out, problem solved.

Moral of the story - don't trust the documentation to tell you everything. I didn't spend a lot of time double-checking the filename because the documentation didn't list it as a possible suspect, even though the error code implied that any parameter might be invalid.

+1  A: 

Oddly, the documentation also states:

If execution is allowed to continue, these functions set errno to EINVAL, and return -1. No new process is spawned.

How much of it should be trusted?

Also, it isn't supposed to return EINVAL. It sets errno to EINVAL.

sean e
Thanks for noticing that. I think I saw it earlier, and dismissed it because I knew all the conditions to be false. I also think you're right about the code being in errno instead of a return value, but I don't have the exact code in front of me right now - I'll have to check later.
Mark Ransom
I've accepted this answer as the most helpful, as it pointed out the obvious contradiction in the documentation. The lack of competition didn't hurt either.
Mark Ransom