内核系统调用创建一个新文件

时间:2013-12-04 05:18:03

标签: linux-kernel

我正在尝试学习Linux内核中有关VFS的一些概念,而我似乎无法找到在创建新文件时进行的调用。我特别想知道如何知道要创建文件的文件夹是否是有效文件夹。可能有一点指向系统调用的方向来创建一个新文件吗?

P.S。我正在使用内核3.4

2 个答案:

答案 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此函数。