2011-07-28 44 views
1

gEDA中,我们有一个帮助程序需要创建一个子进程并检查其退出状态以确保其成功完成。在Linux上,我们使用了类似于:检查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; 
} 

full source code for the program可以在我们的Git仓库中找到。

不幸的是,当使用MinGW编译Windows时,我们发现sys/wait.h不存在,并且WIFEXITEDWEXITSTATUS宏也不存在。使用g_spawn_sync来检查正常退出并在Windows上检索退出状态的“正确方法”是什么?谷歌出乎意料无益!

+1

不知道为什么你期望linux系统头文件能够在寡妇身上工作... – Necrolis

+2

我希望在Windows上没有任何工作,我很少失望。上面的代码适用于除Windows以外的所有内容;我希望有人可以建议如何修改它以支持这一点。 –

回答