C g_主_环、叉、螺纹

C g_主_环、叉、螺纹,c,multithreading,exec,fork,glib,C,Multithreading,Exec,Fork,Glib,我相信这是一个简单的问题,但到目前为止,我无法在互联网上找到我需要的答案 我有一个伪代码,如下所示: main() { loop = g_main_loop; main_loop_callback(keyboard_cb, keyboard input); g_main_loop_run(loop); } 我的回调函数如下所示: keyboard_cb { start_process(./rtsp_server "port / mountPoint / in

我相信这是一个简单的问题,但到目前为止,我无法在互联网上找到我需要的答案

我有一个伪代码,如下所示:

main() {
    loop = g_main_loop;

    main_loop_callback(keyboard_cb, keyboard input);

    g_main_loop_run(loop);
}
我的回调函数如下所示:

keyboard_cb {
    start_process(./rtsp_server "port / mountPoint / input");
}
main {
    loop = g_main_loop;

    rtsp_server(port, mountPoint, input);

    g_main_loop_run(loop);
}
我想开始的过程是这样的:

keyboard_cb {
    start_process(./rtsp_server "port / mountPoint / input");
}
main {
    loop = g_main_loop;

    rtsp_server(port, mountPoint, input);

    g_main_loop_run(loop);
}
我已经有了一个rtsp服务器代码,它以我想要的方式完美地工作。但是,我不确定如何从另一个
C
程序调用此程序。我首先想使用
fork
,但参考手册中写道
g\u main\u loop
fork
不兼容,我应该使用
exec()

这在exec()中可行吗

g_main_循环
是否会相互混淆,因为它们都使用默认上下文


考虑到我可能会创建一些任意数量的rtsp_服务器,并且每个
rtsp_服务器
都有自己的
g_主循环
,在我创建第一个服务器之后,
exec()
会被卡住吗?我是否需要在
键盘\u cb
中插入一个线程,这样它就不会被卡住?

我认为fork/exec很好,只要您不在
fork()
exec()
之间使用事件循环。。文档似乎在说分叉后必须退出或执行(从子进程),而不返回mainloop——这并不是说你应该使用
exec()
,而不是
fork()
@Dmitri,我明天会尝试并报告结果。@Dmitri我已经尝试了你的建议,但它没有按照我希望的方式工作。