ฉันสามารถลองดัก Interrupt ที่ระดับต่ำกว่าและแจ้งแอปพลิเคชัน gtkmm
ไม่นั่นคือกิจกรรมในพื้นที่เคอร์เนล โชคดีที่เคอร์เนลรายงานผลลัพธ์ของเหตุการณ์บางอย่างผ่านอินเทอร์เฟซที่ผู้ใช้สามารถเข้าถึงได้
เป็นคำถามที่คลุมเครือเล็กน้อยในคำถามของคุณว่าคุณต้องการตรวจจับเมื่อติดตั้งอุปกรณ์บล็อกหรือเมื่อติดตั้งระบบไฟล์ (แม้ว่ามันจะเป็นแบบเก่ากว่าก็ตาม) หากระบบของคุณใช้การติดตั้งอัตโนมัติ (โดยปกติจะทำตามค่าเริ่มต้น) ระบบจะเมานต์ระบบไฟล์จากอุปกรณ์บล็อกเมื่อมีการเชื่อมต่อมิฉะนั้นคุณจะต้องดำเนินการด้วยตนเอง (เช่นด้วยmount
)
ทั้งสองวิธีที่คุณต้องการที่จะสำรวจ / แยก / สแกนเคอร์เนลโหนดไฟล์อินเตอร์เฟซ ผมเคยทำแบบนี้มาก่อนในโปรแกรมประยุกต์ (c ++ GTK หนึ่งในความเป็นจริง) ที่ติดตามทั้งอุปกรณ์ป้องกันที่แนบมาและติดตั้งระบบไฟล์ผ่านทางและ/dev/
/etc/mtab
นี่คือวิธีการที่ไม่เชื่อเรื่องภาษาและตรงไปตรงมา บางคนพบว่ามันน่ารังเกียจเล็กน้อยในตอนแรกเพราะมันเกี่ยวข้องกับการอ่านไฟล์ / ไดเรกทอรี แต่อินเตอร์เฟสเหล่านี้ไม่มีอยู่จริงบนดิสก์ดังนั้นจึงไม่มี I / O หนักมากและจำไว้ว่า: read()
เป็นการเรียกของระบบ การอ่านโหนดไฟล์ในอินเทอร์เฟซของเคอร์เนลมีจำนวนเท่ากับlistAttachedDevices()
API สไตล์ยกเว้นอีกครั้งเป็นภาษาที่ไม่เชื่อเรื่องพระเจ้า เมื่อคุณไปอ่านจากโหนดเหล่านี้เคอร์เนลจะส่งข้อมูลที่เป็นตัวแทนของคุณโดยตรง
/dev
รายการไดเรกทอรีอุปกรณ์ที่แนบเป็นไฟล์โหนดอุปกรณ์พิเศษ - /dev/sda
เช่น เคอร์เนลเหล่านี้ถูกเพิ่มและลบออกเนื่องจากมีการเสียบอุปกรณ์เข้าและออกดังนั้นหากคุณติดตามโดยการสำรวจเป็นระยะ ๆ (พูดทุก ๆ 5 วินาที) คุณสามารถตรวจสอบว่ามีอะไรใหม่และสิ่งที่หายไป ภาวะแทรกซ้อนเดียวที่นี่คือเนื่องจากไม่มี API สไตล์การติดต่อกลับคุณต้องสร้างเธรดของคุณเองสำหรับสิ่งนี้หากคุณต้องการตรวจสอบอย่างต่อเนื่อง (อาจเป็นเพราะเหตุใดgparted
คุณจึงต้องคลิกRefresh Devices
แทน)
ทางเลือกที่ดีกว่าน่า/dev
จะเป็นสิ่ง/sys/block
ต่อไปนี้ โปรดทราบว่ามีความแตกต่างอย่างมีนัยสำคัญระหว่าง/dev
และ/proc
(ดูด้านล่าง) หรือ/sys
ในขณะที่โหนดในภายหลังมีข้อมูลเกี่ยวกับสิ่งต่าง ๆ เช่นอุปกรณ์ในขณะที่โหนดใน/dev
เป็นการเชื่อมต่อกับอุปกรณ์จริง (ดังนั้นหากคุณสแกน/dev
อย่า ' ไม่ต้องอ่านไฟล์แต่ละไฟล์แค่สังเกตว่ามีอยู่)
/etc/mtab
now-a-days เป็นsymlink (ดูที่-s
สวิตช์ในman ln
) เพื่อ/proc/self/mounts
; /proc
เป็นส่วนต่อประสานเคอร์เนลมีดสวิสกองทัพใหญ่ (ดูman proc
) รายการนี้filesystems ติดตั้ง ; หากคุณใช้สิ่งที่ติดตั้งอัตโนมัติจะปรากฏขึ้นและหายไปจากที่นั่นเมื่อสิ่งที่เสียบเข้า / ออก ข้อมูลใน/proc
และ/sys
มักจะอยู่ในรูปแบบของข้อความ ASCII ดังนั้นคุณสามารถดูไฟล์เหล่านี้ด้วยcat
ฯลฯ และแยกวิเคราะห์ด้วยฟังก์ชันสตริง (สตรีม)
WRT ไปยังอุปกรณ์ประเภทอื่นเช่นเครื่องสแกนลายนิ้วมือ/sys
เป็นจุดเริ่มต้นที่ดี - /sys/dev
มีblock
และchar
ไดเรกทอรี อุปกรณ์บล็อคมักจะเก็บข้อมูล; ข้อมูลเกี่ยวกับพวกเขาสามารถเข้าถึงแบบสุ่ม อุปกรณ์ Char แลกเปลี่ยนข้อมูลกับระบบในสตรีมซึ่งจะรวมถึงสิ่งต่าง ๆ เช่นสแกนเนอร์กล้องสิ่งของ HID (อุปกรณ์อินเตอร์เฟสมนุษย์เช่นเมาส์และคีย์บอร์ด) ฉันสังเกตเห็นว่า gtkmm มีบางสิ่งระดับสูงสำหรับสิ่งที่แนบมากับ HID สันนิษฐานว่าเนื่องจากสิ่งเหล่านี้มีความสำคัญในการโต้ตอบกับ GUI
gtkmm
แท็กเนื่องจากคำถามเกี่ยวกับที่อยู่ในกองซ้อนมากเกินไป อย่างไรก็ตามไลบรารี GTK ไม่ได้รวมฟังก์ชั่นประเภทนี้ไว้และนอกนั้นไม่มีการเรียกกลับคุณสามารถลงทะเบียนกับระบบได้