假设我正在开发一种系统调用,它接收一个 pid_t pid
并返回一个文件描述符 fd
。这个系统调用要做的是监视 pid 为 pid
的进程,这样,每当这个其他进程调用 fork()
时,就会向文件描述符 写入一些内容fd
。为此,我在 struct task_struct
中创建了一个新的列表字段,例如,名为 files_to_signal_on_fork
。因此,我的系统调用创建了一个新的 struct file *file
,获取与 pid
相关的 struct task_struct *task
,添加 file
到 task
的 files_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/