เรียนรู้คำสั่ง Linux - ioctl

ชื่อ

ioctl - อุปกรณ์ควบคุม

สรุป

# include

int ioctl (int d , int ขอ ... );

ลักษณะ

ฟังก์ชัน ioctl จะจัดการพารามิเตอร์อุปกรณ์ต้นแบบของไฟล์พิเศษ โดยเฉพาะอย่างยิ่งลักษณะการทำงานหลายอย่างของไฟล์พิเศษของอักขระ (เช่นขั้ว) อาจถูกควบคุมด้วยคำขอ ioctl อาร์กิวเมนต์ d ต้องเป็นตัวอธิบายไฟล์แบบเปิด

อาร์กิวเมนต์ที่สองคือรหัสคำขอที่ขึ้นอยู่กับอุปกรณ์ อาร์กิวเมนต์ที่สามคือตัวชี้ untyped ไปยังหน่วยความจำ เป็นประเพณี char * argp (จากวันก่อน void * ถูกต้อง C) และจะได้รับการตั้งชื่อเพื่อการสนทนานี้

คำขอ ioctl เข้ารหัสในข้อมูลว่าอาร์กิวเมนต์เป็นพารามิเตอร์หรือพารามิเตอร์ ออก และขนาดอาร์กิวเมนต์ argp เป็น ไบต์ มาโครและนิยามที่ใช้ในการระบุ คำขอ ioctl จะอยู่ในไฟล์

มูลค่าย้อนกลับ

โดยปกติในศูนย์ความสำเร็จจะถูกส่งกลับ กี่ ioctls ใช้ค่าส่งกลับเป็นพารามิเตอร์เอาต์พุตและส่งคืนค่าที่ไม่เป็นลบในความสำเร็จ ข้อผิดพลาดส่งกลับ -1 และมีการตั้งค่า errno อย่างเหมาะสม

ข้อผิดพลาด

EBADF

d ไม่ใช่ descriptor ที่ถูกต้อง

EFAULT

argp อ้างอิงพื้นที่หน่วยความจำที่ไม่สามารถเข้าถึงได้

ENOTTY

d ไม่เกี่ยวข้องกับอุปกรณ์พิเศษตัวอักษร

ENOTTY

คำขอที่ระบุไม่มีผลกับออบเจ็กต์ที่ descriptor d references

EINVAL

คำขอ หรือ argp ไม่ถูกต้อง

สอดคล้องกับ

ไม่มีมาตรฐานเดียว อาร์กิวเมนต์ผลตอบแทนและความหมายของ ioctl (2) แตกต่างกันไปตามโปรแกรมควบคุมอุปกรณ์ที่เป็นปัญหา (สายเรียกใช้เป็น catch-all สำหรับการดำเนินการที่ไม่พอดีกับรูปแบบ I / O ของ Unix ) ดูรายการ ioctl_list (2) สำหรับรายการสาย ioctl ที่ รู้จักกันดีจำนวนมาก การเรียกใช้ฟังก์ชัน ioctl ปรากฏในเวอร์ชัน 7 AT & T Unix