2009-05-28 5 views
1

J'appelle la fonction _wspawnv de Microsoft, et il revient sans cesse -1 avec errno 22; errno.h définit cela comme EINVAL. Selon la documentation de Microsoft pour _wspawnv, ce code ne doit être renvoyé que si le paramètre mode n'est pas valide. J'ai essayé de l'appeler avec _P_WAIT et _P_NOWAIT dans le premier paramètre, et les deux retournent la même erreur. Pourquoi le mot-clé _wspawnv de Microsoft renvoie-t-il EINVAL?


Edit: Il est étonnant de voir combien les problèmes peuvent être résolus en allant loin pour une journée. Il ne m'a pas fallu longtemps pour réaliser que le nom de fichier dans le deuxième paramètre avait des citations autour de lui. Je les ai sortis, le problème a été résolu.

Morale de l'histoire - ne font pas confiance à la documentation pour vous dire tout. Je n'ai pas passé beaucoup de temps à double vérification du nom de fichier, car la documentation n'a pas la liste comme un suspect possible, même si le code d'erreur implique que un paramètre pourrait être invalide.

+0

Quel est le code de sortie qui est retourné si vous exécutez ce programme à partir de la ligne de commande? (Vous devriez pouvoir utiliser echo% ERRORLEVEL% une fois la commande terminée). – jdigital

Répondre

2

Bizarrement, le documentation indique également:

Si l'exécution est autorisée à continuer, ces fonctions errno à la EINVAL et le retour -1. Aucun nouveau processus n'est engendré.

Quelle quantité doit-on faire confiance?

En outre, il est pas censé revenir EINVAL. Il définit errno à EINVAL.

+0

Merci de l'avoir remarqué. Je pense que je l'ai vu plus tôt, et je l'ai rejeté parce que je savais que toutes les conditions étaient fausses. Je pense aussi que vous avez raison de dire que le code est dans errno au lieu d'une valeur de retour, mais je n'ai pas le code exact devant moi en ce moment - je vais devoir vérifier plus tard. –

+0

J'ai accepté cette réponse comme la plus utile, car elle a souligné la contradiction évidente dans la documentation. Le manque de concurrence n'a pas fait de mal non plus. –

+0

Quelle est la solution ici? Je suis confronté au même problème. Je n'ai pas de guillemets dans le second paramètre. – Shashi