安全shm分离为母亲过程

时间:2017-01-06 10:37:50

标签: c linux kernel

可能是我的问题有点太深了,我想到了一个不存在的问题。我希望你能提供帮助。 ;-) 问题如下: 我在启动时在Linux中启动一个进程(rc.d),然后创建一个共享内存并分叉两个守护进程。守护进程一旦与父进程分离,就会继承父进程的共享内存,但也有自己的会话,并且不再连接到父进程。 他们是否有自己的共享内存链接,内核是否计算引用?我问,因为我想安全地分离父进程,然后才能解决问题。在我的实现中它工作,共享内存由父进程分离,但守护进程仍然可以使用它。 是安全还是仅仅巧合?

提前感谢您的想法!

马泰尔

1 个答案:

答案 0 :(得分:2)

在linux中,每个进程都有一个File Descriptor Table文件描述符索引到由内核维护的每进程文件描述符表中,该表又被索引到由所有进程打开的系统范围的文件表中,称为文件表。

现在在fork中,每个子进程都有自己的FD,并且每个条目都指向与父进程中相同的对象。因此,如果父进程在其FD中关闭其共享内存索引,则这不会影响其他进程,因为操作系统不会关闭此共享内存,因为它仍然被不同的进程使用。 (换句话说,子进程仍然附加到此S.M并且具​​有指向它的链接,操作系统会对它们进行计数)