【发布时间】:2016-04-09 03:27:09
【问题描述】:
我有一个关于 exec() 和 fork() 系统调用的问题。 我要完成的工作:一个小程序,其中有 3 个“主”进程,其中一个执行 fork() N 次(用户选择),每个孩子都向其他 2 个进程发送消息以同步和做一些事情。
所以: main.c:创建队列、sem 和其他 ipc 内容。然后 fork(2 次)和 exec(p1)/(p2)。如果一切正常,它会根据用户的选择开始分叉 N 次。
p1.c:附加到main创建的ipc,等待来自“main.c”子节点之一的消息
p2.c: attach to ipc...等待来自“main.c”的一个子节点或表单“p2.c”的消息
我现在在做什么:我写了 3 个 C 文件,每个文件都有一个 main 函数,“第一个 main”保留所有 IPC 结构,然后 fork 并执行和 execve() 以启动其他 2 个程序.
一切似乎都很好,第一个运行并正确分叉,execve() 运行其他 2 个程序,这些可以附加到第一个程序创建的 ipc 结构。太好了,但是我有 3 个程序,3 个主程序,当然我不能只构建一个可执行文件。
所以我的问题是:如何在没有主程序的情况下使用 syscall exec 加载(如果可能)程序? 如果不可能,我应该如何编写程序的结构?
我希望清楚,如果需要我可以编写代码,但现在有几行..
谢谢!!
【问题讨论】: