如何使用Glib g_spawn *()函数替换fork()

时间:2015-06-01 04:01:07

标签: gtk multiprocessing glib

我有一些程序想要使用Glib进行跨平台运行。 但我发现Glib的过程控制g_spawn *()函数非常难以使用。 我不知道如何替换一些非常基本的Unix系统函数fork()。



#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    pid_t pid = fork();
    if (pid == 0)
    {
        printf("Here is child process\n");
    }
    else if (pid > 0)
    {
        printf("Here is parent process\n");
    }
    else
    {
        // fork failed
        printf("fork() failed!\n");
        return 1;
    }
    return 0;
}
&#13;
&#13;
&#13;

g_spawn *()函数描述在这里,它需要填充很多参数甚至需要其他函数来帮助它绑定IO,我不知道如何使用它们替换fork(),它总是试图在&#34; gchar ** argv中运行一些脚本,&#34;论点。但我只需要它像fork()一样工作,不要像exec()那样运行。 点击here

1 个答案:

答案 0 :(得分:0)

GLib中的流程生成API旨在替换使用fork()exec()的常见模式,而不仅仅是fork()。它实际上非常好(并且很容易)用于它的设计,但是如果你想要一个像fork()那样的API,你应该使用fork()