2013-12-04 4 views
0

Я пытаюсь изучить некоторые понятия о VFS в ядре Linux, и я не могу найти, какие вызовы создаются при создании нового файла. Мне особенно интересно узнать, как узнать, является ли папка, в которой будет создан файл, является допустимой папкой. Может ли кто-нибудь указать направление системных вызовов для создания нового файла?Системный вызов ядра для создания нового файла

P.S. Я использую ядро ​​3.4

ответ

1

Если вы говорите о пространстве пользователя (которое я предполагаю, потому что вы спрашивали о системных вызовах), то одним из самых простых способов определить, какие вызовы вызывается, является использование утилиты strace.

Здесь я использую утилиту touch для создания файла.

$ rm foo; strace touch foo 

Глядя на полученный вывод, где foo ссылается мы видим:

open("foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 

Это должно дать вам некоторые подсказки, чтобы докопаться дальше.

1

Посмотрите на источники ядра: linux/fs/open.c. Существует определение функции sys_open() (SYSCALL_DEFINE3 (open,) ...). AFAIK эта функция вызывается при вызове open() из пользовательского пространства.

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