release函数在另一个进程上下文中调用

时间:2012-02-08 08:18:56

标签: linux file kernel release

我在设备驱动程序的file_operation中注册了一个发布回调函数,如:

struct file_operations driver_fops =
{
    .open       = drv_open,
    .release    = drv_release,
    .unlocked_ioctl = drv_unlocked_ioctl,
    .mmap       = drv_mmap,
};

当进程(打开设备文件)被终止时,将调用释放函数。但奇怪的是,当我尝试在drv_release中获取当前进程的pid时,有时pid不属于打开文件的进程。这意味着在另一个进程上下文中调用release()函数。这是正常的吗?

1 个答案:

答案 0 :(得分:0)

也许这是因为fork()。如果父进程打开你的设备,然后分叉并死亡,然后子关闭描述符 - 关闭将来自另一个进程。