【发布时间】:2011-07-28 09:51:56
【问题描述】:
在gEDA 中,我们有一个帮助程序,需要创建一个子进程并检查其退出状态以确保它成功完成。在 Linux 上,我们使用类似于:
#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 不存在,WIFEXITED 或 WEXITSTATUS 宏也不存在。检查正常退出并使用g_spawn_sync 在 Windows 上检索退出状态的“正确方法”是什么?谷歌出人意料地没有帮助!
【问题讨论】:
-
不知道为什么你希望 linux 系统头文件首先在寡妇上工作......
-
我完全不希望在 Windows 上工作,而且我很少感到失望。上面的代码适用于除 Windows 之外的所有东西;我希望有人可以建议如何修改它以支持它。
标签: c windows subprocess glib