我正在制作服务器,并使用fork()创建子进程,但我对此有所怀疑。这里有一些:有关分叉进程的问题
- 为什么你需要关闭父进程中的子进程中的主要套接字和新的连接接受套接字? (在接受一个新的连接之后),我认为套接字只是带有一些id的整数,用于访问某些系统范围对象中的打开的套接字,这些套接字只能通过系统函数调用接受。在这种情况下,fork只会复制整数,但对打开的套接字没有影响。
- 我检查并发现,如果我在一个类方法内部派生一个进程,所有成员都被复制。那么,我发现它是在编辑上复制的,这是否意味着我的服务器类将被复制到使用非常量函数的每个子项中?我如何在所有这些进程之间共享一些内存(如任务列表,每个孩子在父母正在从中读取东西时将其中的东西放入其中)?我认为fork不适合这个功能。什么是最好的方法?
附:我很确定我知道第二个问题的答案,即clone(),但只是想确保这是正确的功能。
这是非常翔实的。它确实很好地解释了套接字。现在很清楚。其实我有一些多线程的经验。我曾与pthreads工作,但叉似乎很好,因为你不需要另一个功能来做这件事。但是......我现在可能会使用pthread;) – Pijusn 2012-01-11 18:11:47