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

标签 c linux memory-management malloc fuse

我正在关注一个例子 FUSE Tutorial了解 FUSE 在 Linux 中的工作原理。在示例中,所有动态数据都使用 malloc 分配,并作为用户数据传递给 fuse_main 函数。以后任何熔断器调用都可以访问此数据。这些调用不需要来自同一个进程。这是如何工作的?

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

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

1.如果bbfs程序已经退出,是否访问使用malloc分配的内存? bbfs 程序退出后,OS 不会释放使用 malloc 分配的内存吗?

2.访问定义的函数,如果定义它们的进程已经退出?进程退出后,fuse 函数的目标代码 位于何处?

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

最佳答案

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

… But [the FUSE server] exits after the filesystem is mounted.

它实际上并没有退出。只要挂载了文件系统,它就会 fork 到后台并继续运行。

在运行时,一切正常。

关于c - FUSE 程序中的内存分配是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27218837/

相关文章:

python - 一个小 python 脚本中的缩进问题::修复了代码 - 现在它运行得非常完美

c - ADDR2LINE 报告的行号是 1 号吗?

c - Strtok 没有按预期返回,我使用它是否错误?

c - 如何列出 *.so C 库中的所有函数

c - 在 C 中的 malloc 之后调用 free() 时出现无效指针错误

linux - 系统启动时如何导出变量

linux - 动态更改套接字选项

delphi - 在此过程中,Delete 是否做了任何事情?

c - 如何在 Linux 上调试内存覆盖

linux - 不使用 SSH (KVM) 获取 VM 的 CPU 使用率