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