FUSE程序中的内存分配如何工作?

时间:2014-11-30 22:09:31

标签: c linux memory-management malloc fuse

我正在关注一个示例FUSE Tutorial以了解FUSE如何在linux中运行。在该示例中,所有动态数据都使用malloc分配,并作为用户数据传递给fuse_main函数。以后可以访问此数据以进行任何保险丝调用。这些调用不必来自同一个过程。这是如何工作的?

为了使问题更清楚, 我用bbfs运行主../src/bbfs rootdir mountdir程序来挂载文件系统。在bbfs.c的main()中调用malloc。 bbfs程序还定义了几个fuse函数调用。但是这个程序在安装文件系统后退出。

如何在挂载的文件系统上调用read()open()的其他程序(或内核)

1.如果bbfs程序已经退出,则使用malloc分配的内存?在程序bbfs退出后,操作系统是否会释放使用malloc分配的内存?

2.访问定义的函数,如果定义它们的进程已经退出?退出流程后,保险丝功能的object code会驻留在哪里?

我对目标代码和堆内存对象的生命周期以及其他程序(或内核)以后如何使用它感到困惑。任何帮助或指示将不胜感激。

1 个答案:

答案 0 :(得分:2)

您的大部分问题都基于错误的假设:

  

...但是[FUSE服务器]在安装文件系统后退出。

它实际上根本没有退出。只要安装了文件系统,它就会进入后台并继续运行。

当它正在运行时,一切正常。