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

时间:2013-06-30 13:29:40

标签: 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,获取与struct task_struct *task相关的pid,将file添加到task' s files_to_signal_on_fork列出并返回表示file的文件描述符,以便我可以使用poll跟踪其他进程调用fork()的时间。我向do_fork添加了几行代码,因此,当它被调用时,它会向存储在进程中的所有struct file *结构写入内容。 files_to_signal_on_fork列表。

所以,正在通过一个过程' struct file *结构给另一个进程一个好主意?有没有办法在struct file *尝试写一些内容之前检查do_fork的所有者是否还活着?

1 个答案:

答案 0 :(得分:1)

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