所以我想了解內置函數,如S_ISREG,S_IXUSR等。我無法理解像這些返回的函數或它們一般做些什麼以及他們如何處理系統調用,如stat這是(從我讀過的)系統結構。關於結構類型統計和系統調用函數,如S_ISREG
太棒了,很酷。但是我不明白的是這些變量或函數返回什麼?我讀到他們都互相幫助,但輸出是否st->st_mode
返回,使其有效的功能S_ISREG
接收?
要總括起來:
什麼樣S_ISREG函數接受?他們返回什麼呢?那麼結構類型統計信息包含哪些內容可以使其對S_ISREG進行驗證?
PS:我發現下面這個函數,我只是想更好地理解它。如果你想與下面的功能一起解釋,甚至更好。
static int
valid_cgi_script(struct stat *st)
{
if (!S_ISREG(st->st_mode))
return 0;
if (!(st->st_mode & S_IXUSR))
return 0;
if (cgi_uid >= 0 && cgi_gid >= 0) {
if (st->st_uid != cgi_uid || st->st_gid != cgi_gid)
return 0;
}
return 1;
}
那麼grep -r S_ISREG/usr/include部分肯定幫了我,我可以看到標題中的定義。現在我需要了解宏如何工作,但我只與他們合作,如 #define NUM 3 就是這樣。 但我看到的是這樣的: #define S_ISREG(mode)__S_ISTYPE((mode),__S_IFREG) 試圖找出這些定義是如何工作的 – Joe