ฟังก์ชัน Fstat ใน C

Fangkchan Fstat Ni C



ฟังก์ชัน fstat() เรียกใช้ระบบเพื่อส่งคืนข้อมูล (เกี่ยวกับไฟล์บางไฟล์) ที่ขึ้นอยู่กับคำอธิบายของไฟล์นั้น ฟังก์ชันนี้รับข้อมูลสำหรับไฟล์ที่เกี่ยวข้องกับ file descriptor หรือที่เรียกว่า “fildes” จากนั้นเขียนข้อมูลนี้ในตำแหน่งหน่วยความจำที่บัฟเฟอร์ชี้ไป ชนิดส่งคืนของฟังก์ชันนี้เป็นจำนวนเต็ม คืนค่า '0' หากโปรแกรมดำเนินการสำเร็จ มิฉะนั้นจะส่งกลับ '-1' ไปยังฟังก์ชันในกรณีที่การดำเนินการล้มเหลว ข้อผิดพลาดในการดำเนินการสำหรับฟังก์ชันนี้อาจเกิดจากสาเหตุบางประการ เช่น หากไฟล์ของฟังก์ชันมีตัวอธิบายที่ไม่ถูกต้องสำหรับไฟล์ หากข้อผิดพลาดในการอ่านอินพุตและเอาต์พุตเกิดขึ้นจากไฟล์ และหากตำแหน่งหน่วยความจำ (โครงสร้าง) ที่ บัฟเฟอร์ชี้ให้เขียนข้อมูลไฟล์มีหน่วยความจำที่จัดสรรไม่เพียงพอสำหรับขนาดไฟล์

ขั้นตอน

บทความนี้เป็นไปตามลำดับเพื่อใช้ฟังก์ชัน fstat() เพื่อรับข้อมูลไฟล์ ก่อนอื่นเราเรียนรู้ไวยากรณ์ของฟังก์ชันนี้ พารามิเตอร์ที่จำเป็นสำหรับฟังก์ชันนี้ จากนั้น เราใช้ไวยากรณ์นี้เพื่อดำเนินการตัวอย่างสำหรับฟังก์ชัน fstat()







ไวยากรณ์

วิธีการประกาศฟังก์ชัน fstat() ซึ่งช่วยให้สามารถเข้าถึงโปรแกรมไปยังข้อมูลไฟล์ได้ระบุไว้ในบรรทัดต่อไปนี้:



$ #include
$ int สถานะ ( int fildes , โครงสร้าง สถานะ * บัฟ ) ;

เมื่อใดก็ตามที่เราต้องเรียกใช้ฟังก์ชันในโปรแกรมของเรา เราต้องนำเข้าไฟล์ส่วนหัวก่อนที่สนับสนุนฟังก์ชันนี้เป็น 'sys/ stat.h' ชนิดส่งคืนสำหรับฟังก์ชันจะเป็น 'int' เสมอ และพารามิเตอร์รวม 'fildes' กับประเภทข้อมูล 'int' Fildes เป็นตัวบ่งชี้สำหรับไฟล์ที่เราต้องการทราบข้อมูล พารามิเตอร์อื่นที่กำหนดให้กับฟังก์ชันคือตัวชี้ 'buf' มันคือตัวชี้ 'struct stat' ที่ชี้ไปยังโครงสร้างที่เราต้องการเก็บข้อมูลเกี่ยวกับไฟล์ นี่คือคำอธิบายสั้น ๆ ของพารามิเตอร์อินพุตสำหรับฟังก์ชัน fstat()



ตัวอย่าง

เราใช้คำอธิบายที่กล่าวถึงก่อนหน้านี้และรันโปรแกรมเพื่อรับข้อมูลเกี่ยวกับไฟล์ใด ๆ / เฉพาะผ่านโปรแกรมของเรา เราเขียนโปรแกรมนี้ในคอมไพเลอร์ Microsoft Visual Studio C เพื่อดำเนินการ เราเริ่มต้นด้วยตัวอย่างโดยการสร้างโปรเจ็กต์ก่อน จากนั้นจึงเพิ่มลงในที่เก็บ C ใน Visual Studio ในการเพิ่มโปรเจ็กต์ลงในไฟล์ C เราจะใส่ “.c” กับชื่อโปรเจ็กต์และเพิ่มลงในไฟล์ต้นฉบับของโปรเจ็กต์ ขั้นตอนต่อไปหลังจากสร้างโครงการคือการเรียกไลบรารีที่จำเป็นทั้งหมดสำหรับฟังก์ชันที่เราอาจใช้ในภายหลังในโปรแกรม เนื่องจากเรากำลังใช้ตัวอย่างสำหรับฟังก์ชัน fstat() ในบทความนี้ เราจึงต้องรวมไฟล์ส่วนหัว “sys/ stat.h “ สำหรับข้อมูลไฟล์ เราจำเป็นต้องทราบประเภทอุปกรณ์ที่มีไฟล์อยู่ หากต้องการทราบประเภทข้อมูลสำหรับอุปกรณ์ เราได้รวมส่วนหัว 'ประเภท' h” ในโปรแกรม





ข้อมูลไฟล์ต้องมีเวลาที่ไฟล์ถูกเปิดล่าสุดและการแก้ไขที่ทำในไฟล์ ในการเข้าถึงฟังก์ชันการเรียกเวลาเหล่านี้ เราเพิ่มไฟล์ส่วนหัว 'ครั้ง h” และ “fcntl. h” สำหรับฟังก์ชั่นการอนุญาตไฟล์ ส่วนหัวสุดท้าย “stdio. h” รวมอยู่ในโปรแกรมเพื่อเรียกใช้เมธอด printf() และ scanf() ในโปรแกรม ไฟล์ส่วนหัวที่เรากล่าวถึงจะรวมอยู่ในโปรแกรมมีดังนี้:

$ #include
$ #include
$ #include
$ #include
$ #include

หลังจากที่นำเข้าไฟล์ส่วนหัวที่กล่าวถึงก่อนหน้านี้เข้าสู่โปรแกรมเรียบร้อยแล้ว ตอนนี้เราสร้างโปรแกรมเพื่อรับข้อมูลเกี่ยวกับไฟล์เฉพาะ เราประกาศฟังก์ชันที่มีประเภทการส่งคืนเป็น 'int' ด้วยชื่อ 'main' ในฟังก์ชันหลักนี้ เราประกาศอาร์เรย์ 'char' และกำหนดชื่อไฟล์ที่เราจำเป็นต้องทราบข้อมูลให้ จากนั้น เรากำหนด 'ข้อมูลสถิติ' ด้วยประเภทข้อมูล 'โครงสร้าง' โครงสร้างนี้เป็นสถานที่ที่เราจัดเก็บข้อมูลเกี่ยวกับไฟล์



จากนั้น เรากำหนดตัวแปรอื่นด้วยชื่อ “file_descriptor” โดยมีประเภทข้อมูลเป็น “integer” ใน 'เงื่อนไขถ้า' เราขออนุญาตสำหรับการดำเนินการอ่านและเขียนสำหรับไฟล์ถ้ามี โดยส่ง 'S_IWUSR' และชื่อของอาร์เรย์ไปยังฟังก์ชัน 'create()' ซึ่งเรียกใช้การอนุญาตสำหรับไฟล์หาก มันมีอยู่หรือสร้างไฟล์ใหม่เป็นอย่างอื่น เราส่งฟังก์ชัน create() นี้ไปยัง 'if condition' ซึ่งระบุว่าค่าฟังก์ชัน create() มีค่าน้อยกว่าศูนย์ จะสร้างข้อผิดพลาดที่ไฟล์จำเป็นต้องสร้างขึ้น หาก fstat() ที่มีพารามิเตอร์เป็น “file_descriptor” และ “info” และ “ที่อยู่ของตำแหน่งที่จัดเก็บข้อมูลไฟล์” ไม่เท่ากับศูนย์ เราจะแสดงค่าที่ส่งคืน fstat() ซึ่งเป็นข้อมูลของไฟล์ . และเราพิมพ์ข้อมูลในรูปแบบแอตทริบิวต์เช่น รหัสอุปกรณ์ที่จัดเก็บไฟล์ หมายเลขไอโหนดของอุปกรณ์ โหมดการป้องกันของไฟล์ รหัสผู้ใช้ รหัสกลุ่ม และหมายเลขลิงก์ (แบบฟอร์มฮาร์ด)

หลังจากแสดงแอตทริบิวต์เหล่านี้แล้ว เราก็ออกจากคำสั่งและปิดไฟล์โดยใช้เมธอด close() จากนั้นให้ยกเลิกการเชื่อมโยงไฟล์โดยเรียกใช้เมธอด unlink()

#include
#include
#include
#include
#include

หลัก ( ) {
char อาร์เรย์ [ ] = 'แอมป์.ไฟล์' ;
โครงสร้าง ข้อมูลสถิติ ;
int filedescriptor ;
ถ้า ( ( filedescriptor = ทำ ( อาร์เรย์ , S_IWUSR ) ) < 0 )
ความผิดพลาด ( 'สร้าง () ผิดพลาด' ) ;
อื่น {
ถ้า ( สถานะ ( filedescriptor , & ข้อมูล ) != 0 )
ความผิดพลาด ( ข้อผิดพลาด 'fstat()' ) ;
อื่น {
ทำให้ ( ค่า 'fstat()': ) ;
printf ( ' ไอโหนด: %d \n ' , ( int ) ข้อมูล. st_ino ) ;
printf ( ' device_id: %d \n ' , ( int ) ข้อมูล. st_dev ) ;
printf ( ' โหมดของอุปกรณ์: %08x \n ' , ข้อมูล. st_mode ) ;
printf ( ' no_of_hard_links: %d \n ' , ข้อมูล. st_nlink ) ;
printf ( ' u_id: %d \n ' , ( int ) ข้อมูล. st_uid ) ;
printf ( ' g_id: %d \n ' , ( int ) ข้อมูล. st_gid ) ;
}
ปิด ( filedescriptor ) ;
ยกเลิกการลิงก์ ( อาร์เรย์ ) ;
}
}

โปรแกรมจะเข้าถึงการอนุญาตสำหรับการทำงานของไฟล์ก่อนแล้วจึงอ่านข้อมูลในนั้นและเขียนลงในตำแหน่งหน่วยความจำที่จัดสรร คุณลักษณะที่เราให้โปรแกรมแสดงจากไฟล์จะแสดงในผลลัพธ์

บทสรุป

เราใช้ฟังก์ชัน fstat() เพื่อเข้าถึงข้อมูลไฟล์ ขั้นแรก เราได้เรียนรู้ไวยากรณ์ของฟังก์ชัน fstat() ที่อธิบายด้วยคำอธิบายที่สมบูรณ์ของพารามิเตอร์ของฟังก์ชัน จากนั้น เราเขียนโปรแกรมสำหรับฟังก์ชันนี้ โดยในตอนแรกเราเข้าถึงการอนุญาตจากเจ้าของไฟล์ จากนั้นอ่านไฟล์และแสดงแอตทริบิวต์ที่เราต้องการจากข้อมูลของไฟล์ เราพยายามอย่างเต็มที่เพื่อให้คุณเข้าใจแนวคิดของ fstat() และเราหวังว่าสิ่งนี้จะช่วยคุณในโปรแกรมของคุณ