0

我想从 GtkListStore 读取数据并通过 phpExcel 构建一个 excel。首先,我根据GtkListStore构建一个php文件,然后使用php和phpexcel lib编译构建execl文件。

在我的 gtk 代码(在 MinGW 环境中编译)中,我使用execvp(cmd[0], (const char **)cmd);调用外部命令——php.ini 来调用外部命令。其实cmd[0]就是php.exe和cmd[1]、cmd[2]……都是php的参数。调用 php 命令后,我的 gtk 主窗口关闭,它退出了我的 gtk 程序。

如何防止 php 命令退出主程序?我应该用别的东西代替execvp吗?谢谢你。

4

2 回答 2

0

execvp()和朋友用另一个进程替换当前进程,所以你的程序退出也就不足为奇了。使用g_spawn_sync()或相关功能 - 将运行您的 php 程序,然后将控制权返回给您的原始程序。

于 2012-09-03T08:46:58.163 回答
0

让我回答我自己的问题。以下是我在过去几天内搜索并尝试过的内容的摘要。它没有什么新东西,但可能对像我这样的新手有用。

首先,感谢番茄。为了避免我在 GTK 中的问题,它必须使用g_spawn_sync或相关的功能。如果您的命令是绝对路径,则不必使用标志G_SPAWN_SEARCH_PATH,否则,请确保使用标志。

以下是与MinGW环境相关的内容。

-> gspawn-win32-helper.exe
在 MinGW 中,要使用 g_spawn_sync,它必须已经gspawn-win32-helper.exe安装。当我安装 GTK 环境时,我只提取了有用的 lib 或 exe 文件,我认为它很有用,然后我错过了 gspawn-win32-helper.exe 并导致了问题 -Failed to execute helper program (No such file or directory)在上面的评论中提到。从ftp://ftp.gtk.org/pub/glib/2.10/win32/glib-2.10.0.zip提取 gspawn-win32-helper.exe并安装后,g_spawn_sync 工作。

-> 对于规范的 Windows 路径,双反斜杠和单正斜杠都有效,例如 c:/foo/bar 和 c:\foo\bar 有效。

于 2012-09-06T08:17:50.690 回答