linux - 将 `struct file` 传递给另一个进程

标签 linux file process linux-kernel fork

假设我正在开发一种系统调用,它接收一个 pid_t pid 并返回一个文件描述符 fd。这个系统调用要做的是监视 pid 为 pid 的进程,这样,每当这个其他进程调用 fork() 时,就会向文件描述符 写入一些内容fd。为此,我在 struct task_struct 中创建了一个新的列表字段,例如,名为 files_to_signal_on_fork。因此,我的系统调用创建了一个新的 struct file *file,获取与 pid 相关的 struct task_struct *task,添加 filetaskfiles_to_signal_on_fork 列表并返回代表 file 的文件描述符,这样我就可以使用 poll跟踪其他进程何时调用 fork()。我向 do_fork 添加了几行代码,这样,当它被调用时,它会向存储在进程的 中的所有 struct file * 结构写入一些内容files_to_signal_on_fork 列表。

那么,将进程的 struct file * 结构传递给另一个进程是个好主意吗?在 do_fork 尝试向其写入内容之前,有什么方法可以检查 struct file * 的所有者是否还活着?

最佳答案

文件是引用计数的。 删除最后一个引用时,您必须从任务列表中删除 struct file (f_op->release)。

关于linux - 将 `struct file` 传递给另一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17390840/

相关文章:

c - 使用scanf从C语言中读取txt文件

tcp - 创建一个监听端口的简单 Rust 守护进程

c# - CScript 在 c# 中作为进程调用时仅打开 32 位版本

linux - 列中的返回值小于或等于 4 个字符

linux - 来自用户的模拟 "enter"按钮的命令

php - 如何将 pdf、ppt、xl、doc 文件转换为 txt/html 文件... php/python/perl 中的任何开源工具/代码可用?

python - 如何生成名称中包含今天日期的文件?

java - 失败 - 上下文路径中的应用程序/应用程序无法由 Tomcat Manager 6 启动

linux - PCI 设备(64 位)配置内存访问

linux - Node.js 的性能问题 (Mac OSX) - 进程