我試圖尋找一個特定的功能,e.g fstatfs結構,但我發現下面的代碼,但它幾乎沒有,我查__set_errno宏,它只是設置錯誤號碼。什麼的glibc的源代碼
int
__fstatfs (int fd, struct statfs *buf)
{
__set_errno (ENOSYS);
return -1;
}
所以一組核心庫的ASM實現,但如何是工作,如果是這樣,爲什麼這些功能弱,甚至存在嗎?
我試圖尋找一個特定的功能,e.g fstatfs結構,但我發現下面的代碼,但它幾乎沒有,我查__set_errno宏,它只是設置錯誤號碼。什麼的glibc的源代碼
int
__fstatfs (int fd, struct statfs *buf)
{
__set_errno (ENOSYS);
return -1;
}
所以一組核心庫的ASM實現,但如何是工作,如果是這樣,爲什麼這些功能弱,甚至存在嗎?
我想這電話是依賴於操作系統的,所以你看到的只是一個存根。似乎有某種別名的io/sys/statfs.h,併爲Linux實現的候選人是在sysdeps/unix/sysv/linux/fstatfs64.c文件。
是的,它應該是這樣的,我要更深層面上來看,非常感謝! – daisy 2012-07-05 15:20:21
非常恰當,謝。 unistd.h中的大多數C庫函數實際上都是由OS內核提供的,而C庫實現只是內核系統調用的包裝器。 – 2012-07-05 17:27:40
這樣就可以從調用C呢? – Linuxios 2012-07-05 15:04:17
根據man fstatfs,ENOSYS的返回碼意味着該文件系統不支持該調用。嘗試找到另一個文件系統源。 – tinman 2012-07-05 15:06:57
@tinman很多其他的功能,e.g __connect,__listen也在做着同樣的code..I只是不明白架構 – daisy 2012-07-05 15:13:44