Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 用于母进程的安全shm分离_C_Linux_Kernel - Fatal编程技术网

C 用于母进程的安全shm分离

C 用于母进程的安全shm分离,c,linux,kernel,C,Linux,Kernel,也许我的问题有点太深了,我想到了一个不存在的问题。我希望你能帮忙 问题如下: 我在Linux启动时启动一个进程(rc.d),然后创建一个共享内存并分叉两个守护进程。从父进程分离的守护进程继承了父进程的共享内存,但也有自己的会话,不再连接到父进程。 它们是否有自己的共享内存链接,内核是否计算引用数?我这样做是因为我想在父进程退出之前安全地分离它。在我的实现中,共享内存由父进程分离,但守护进程仍然可以使用它。但这是安全的还是巧合 提前感谢您的想法 Martell在linux中,每个进程都有一个文件描

也许我的问题有点太深了,我想到了一个不存在的问题。我希望你能帮忙 问题如下: 我在Linux启动时启动一个进程(rc.d),然后创建一个共享内存并分叉两个守护进程。从父进程分离的守护进程继承了父进程的共享内存,但也有自己的会话,不再连接到父进程。 它们是否有自己的共享内存链接,内核是否计算引用数?我这样做是因为我想在父进程退出之前安全地分离它。在我的实现中,共享内存由父进程分离,但守护进程仍然可以使用它。但这是安全的还是巧合

提前感谢您的想法


Martell

在linux中,每个进程都有一个
文件描述符表
,文件描述符索引到内核维护的每个进程的文件描述符表中,该表反过来索引到所有进程打开的文件的系统范围表中,称为文件表


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

谢谢,这回答了我的问题。