صفحه نخست | در مورد من | twitter
فایل sys/stat.h دارای تعدادی ماکرو است که برای پیدا کردن فرمت فایل بسیار مفیدند. معمولا ابتدا فیلد st_mode از ساختاری که سیستمکال stat برگردانده است را با ثابت S_IFMT اند بیتی میکنیم و سپس نتیجه حاصله را با مقادیر تعریف شدهای که هر کدام معرف یک نوع فایل است مقایسه میکنیم.
دانستن محتوای این ماکروها خالی از لطف نیست. برنامه ساده زیر این موضوع را بررسی میکند.
#include <stdio.h> #include <stdlib.h> #include <sys/stat.h> int main(int argc, char *argv[]) { int i; struct { char *name; int value; } arr[] = { { "S_IFMT" , S_IFMT }, { "S_IFIFO" , S_IFIFO }, { "S_IFCHR" , S_IFCHR }, { "S_IFDIR" , S_IFDIR }, { "S_IFREG" , S_IFREG }, { "S_IFBLK" , S_IFBLK }, { "S_IFLNK" , S_IFLNK }, { "S_IFSOCK", S_IFSOCK }, { NULL , 0 } }; for (i = 0; arr[i].name != NULL; i++) { printf("%-8s = %#X\n", arr[i].name, arr[i].value); } exit(EXIT_SUCCESS); }
خروجی برنامه به صورت زیر است:
$ ./a.out S_IFMT = 0XF000 S_IFIFO = 0X1000 S_IFCHR = 0X2000 S_IFDIR = 0X4000 S_IFREG = 0X8000 S_IFBLK = 0X6000 S_IFLNK = 0XA000 S_IFSOCK = 0XC000
کلیه حقوق برای دارندهی سایت محفوظ است.