所以我想了解内置函数,如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