2009-11-02 4 views
1

Я занимаюсь курсом в операционных системах, и мы работаем в Linux (Red hat 8.0). Я пытаюсь реализовать открытый файл, закрыть трекер, который сохранит для каждого процесса историю файлов, которые он открывает и закрывает. Я ожидал, что sys_open, близко, также примет идентификатор процесса и что я могу использовать его для доступа к истории процесса, инициировавшего вызов, и его обновления (создание части обновления функций sysopen, close). Однако эти функции не принимают pid как параметр, поэтому я немного потерял, как связать файлы открытия/закрытия с процессом, который инициировал это. Мое единственное догадание состоит в том, что, поскольку в любой момент времени есть только один активный процесс, его метаданные должны быть глобальными в некотором роде, но я понятия не имею, где и как его найти. Любой совет будет принят во внимание.Как проверить, какой процесс был инициирован sys_open

ответ

3

Вы собираетесь делать это в пространстве ядра? Учитывая, что вы смотрели непосредственно на sys_open и т. Д., Которые находятся в пространстве ядра, IIRC, вы можете использовать текущий указатель, чтобы увидеть pid current (current->pid).

+0

Я думаю, что неправильно понял его вопрос. Каким-то образом я понял, что он хочет оставить его в ядре. –

+0

@tinkertim - или, может быть, я неправильно понял ... Мы подождем и посмотрим :) – abyx

+0

Нет, вы не правы, я хотел, чтобы это было в пространстве ядра. Благодарю. –

Смежные вопросы