2016-07-30 53 views
0

當在C中調用fopen()函數時,它會向內核發出系統調用。我想知道哪些內核模塊負責處理系統調用並將文件描述符返回給調用程序。這些內核模塊是否也負責處理read()和write()操作?如果不是,哪些模塊負責。在Linux中使用文件時將負責哪些內核模塊?

我擺弄着發出SCSI命令,並將不勝感激。

回答

2

當在C中調用fopen()函數時,它會向內核發出系統調用。

不完全是。 fopen(3)是一個函數最終調用open(2),系統調用。

我想知道哪些內核模塊負責處理系統調用並將文件描述符返回給調用程序。

無。在Linux中,系統調用全部由核心內核處理,而不是模塊。見fs/open.c

這些內核模塊是否也負責處理read()和write()操作?如果不是,哪些模塊負責。

相同的交易。見fs/read_write.c

在內核被賦予一個打開的路徑時,它將首先確定你請求的文件所在的掛載點。文件系統將安裝在該安裝點,並且該文件系統實現在模塊中實現。

文件系統在塊設備上工作。而且這些塊設備(例如SCSI,IDE)也在模塊中實現。

我擺弄着發出SCSI命令,並將不勝感激。

看一看這裏: http://sg.danny.cz/sg/sg3_utils.html

+0

任何意義,這將是核心內核的一部分。感謝您的信息。 – Daedalus

+1

@Daedalus模塊將在處理打開/讀取/寫入系統調用時參與。系統調用的主要入口點位於核心內核中,但不同的文件系統類型通常作爲模塊實現,顯然,對於「正常」文件訪問,您需要在某個時間訪問文件系統來處理這些系統調用。 – Andrew