मेरे पास नीचे कोड है इसका एक हिस्सा यहां दिखाया गया है और मैं जांच रहा हूं कि फ़ाइल का प्रकार क्या है।कोई फ़ाइल लिंक होने पर कैसे पता लगाना है?
struct stat *buf /* just to show the type buf is*/
switch (buf.st_mode & S_IFMT) {
case S_IFBLK: printf(" block device\n"); break;
case S_IFCHR: printf(" character device\n"); break;
case S_IFDIR: printf(" directory\n"); break;
case S_IFIFO: printf(" FIFO/pipe\n"); break;
case S_IFLNK: printf(" symlink\n"); break;
case S_IFREG: printf(" regular file\n"); break;
case S_IFSOCK: printf(" socket\n"); break;
default: printf(" unknown?\n"); break;
}
समस्या: st_mode
प्राप्त का मूल्य जब मैं एक printf("\nMode: %d\n",buf.st_mode);
कर परिणाम 33188.
मैं एक नियमित फ़ाइल प्रकार और एक प्रतीकात्मक लिंक के साथ मेरे कार्यक्रम का परीक्षण किया है। दोनों मामलों में आउटपुट "नियमित फाइल" था यानी प्रतीकात्मक लिंक केस असफल रहा है और मैं समझने में असफल क्यों हूं?
प्रश्न थोड़ा अस्पष्ट है। क्या आप एक प्रतीकात्मक लिंक का परीक्षण कर रहे हैं, और कार्यक्रम कहता है कि यह एक नियमित फाइल है? Buf.st_mode का मूल्य क्या है? –
@ गिंटौटास: संपादित। –
आपको 'lstat()' की आवश्यकता है। 'stat()' प्रतीकात्मक लिंक का पालन करता है और वे जिन फ़ाइलों को इंगित करता है उन्हें जांचता है। –