我正在尝试学习Linux内核中有关VFS的一些概念,而我似乎无法找到在创建新文件时进行的调用。我特别想知道如何知道要创建文件的文件夹是否是有效文件夹。可能有一点指向系统调用的方向来创建一个新文件吗?
P.S。我正在使用内核3.4
答案 0 :(得分:1)
如果您正在谈论用户空间(我假设是因为您询问了系统调用),那么确定调用哪些调用的最简单方法之一就是使用strace
实用程序。
在这里,我正在使用touch
实用程序来创建文件。
$ rm foo; strace touch foo
查看引用foo
的结果输出,我们看到:
open("foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
这应该会为你提供一些深入挖掘的线索。
答案 1 :(得分:1)
看一下内核源代码:linux / fs / open.c。有sys_open()函数的定义(SYSCALL_DEFINE3(open,)...)。当您从用户空间调用open()时,将调用AFAIK此函数。