Linux 将'struct file'传递给另一个进程
假设我正在开发一种系统调用,它接收一个Linux 将'struct file'传递给另一个进程,linux,file,process,linux-kernel,fork,Linux,File,Process,Linux Kernel,Fork,假设我正在开发一种系统调用,它接收一个pid\t pid,并返回一个文件描述符fd。这个系统调用要做的是监视pid为pid的进程,这样,每当其他进程调用fork()时,就会有东西写入文件描述符fd。为了实现这一点,我在struct task\u struct中创建了一个新的列表字段,例如称为files\u To\u signal\u on\u fork。因此,我的系统调用创建一个新的struct file*file,获取与pid相关的struct task\u struct*task,将file
pid\t pid
,并返回一个文件描述符fd
。这个系统调用要做的是监视pid为pid
的进程,这样,每当其他进程调用fork()
时,就会有东西写入文件描述符fd
。为了实现这一点,我在struct task\u struct
中创建了一个新的列表字段,例如称为files\u To\u signal\u on\u fork
。因此,我的系统调用创建一个新的struct file*file
,获取与pid
相关的struct task\u struct*task
,将file
添加到task
的文件到\u fork
列表上的信号\u,并返回表示文件的文件描述符,这样我就可以使用poll
跟踪其他进程何时调用fork()
。我在do_fork
中添加了几行代码,这样,当调用它时,它会将一些内容写入存储在进程“文件”到\u fork
列表中的所有struct file*
结构中
那么,将进程“struct file*
structure”传递给另一个进程是一个好主意吗?在do\u fork
尝试向其写入内容之前,是否有任何方法可以检查结构文件*
的所有者是否仍然活着?文件被引用计数。
删除任务的最后一个引用时,必须从任务列表中删除结构文件(f_op->release
)