Функция release вызывается в другом контексте процесса

Я зарегистрировал функцию обратного вызова релиза в file_operation в моем драйвере устройства, например:

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

Функция release будет вызвана, когда процесс (откройте файл устройства) будет убит. Но странно то, что когда я пытаюсь получить pid текущего процесса в drv_release, иногда pid не принадлежит процессу, открывающему файл. Это означает, что функция release() вызывается в другом контексте процесса. Это нормально?

1 ответ

Может быть, это из-за fork(). Если родительский процесс открыл ваше устройство, то разветвился и умер, а затем дочерний закрытый дескриптор - закрыть будет от другого процесса.

Другие вопросы по тегам