Dans gEDA, nous avons un programme d'assistance qui doit créer un sous-processus et vérifier son état de sortie pour s'assurer qu'il s'est terminé avec succès. Sous Linux, nous utilisons quelque chose de similaire à:Vérification du statut de sortie des sous-processus sur Windows
#include <glib.h>
#include <sys/wait.h>
static gboolean
build_and_run_command (const gchar *format, ...)
{
int result, status;
gchar *args, *standard_error;
GError *error = NULL;
/* Set up argument variables */
if (g_spawn_sync (".",
args,
NULL,
G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL,
NULL,
NULL,
NULL,
&standard_error,
&status,
&error)) {
result = (WIFEXITED (status) && WEXITSTATUS(status) == 0);
}
/* Clean up */
return result;
}
Le full source code for the program se trouve dans notre dépôt git.
Malheureusement, lors de la compilation pour Windows en utilisant MinGW, nous avons découvert que sys/wait.h
n'existe pas, et ni ne les WIFEXITED
ou WEXITSTATUS
macros. Quelle est la «bonne façon» de vérifier une sortie normale et de récupérer le statut de sortie sur Windows en utilisant g_spawn_sync
? Google a été étonnamment inutile!
Je ne sais pas pourquoi vous vous attendiez à ce que l'en-tête système Linux fonctionne sur les veuves en premier lieu ... – Necrolis
Je ne m'attends à rien du tout sur Windows, et je suis rarement déçu. Le code ci-dessus fonctionne sur tout autre chose que Windows; J'espérais que quelqu'un pourrait suggérer comment le modifier pour le soutenir aussi. –