2012-05-17 33 views
0

我知道read是系統調用。但是當我讀到man 2 and man 3的閱讀它給我看不同的解釋。所以,我懷疑read有庫函數和系統調用。在這種情況下,如果我在我的c程序中使用read,編譯器是否會考慮將其讀爲library函數或system call請在此混淆中解釋我。C編譯器如何決定是否調用庫函數或系統調用

回答

6

它沒有。系統調用存在於libc(C標準庫)中,就像庫函數一樣。系統調用在libc中的實現只是「存根」,它調用特定於系統的方法調用到內核中。

2

我假設你在Linux上。在該平臺上,手冊頁read(2)描述了Linux系統調用,而如果您安裝了POSIX手冊頁,則read(3)描述了POSIX規範read。後者在類別3中,因爲POSIX沒有指定系統調用和庫函數之間的區別。

libc中只有一個read,這是系統調用的一個薄薄的包裝。

相關問題