ทั้งman fstab
มิได้man diskarbitrationd
(ดูที่นี่ตัวอย่าง) /etc/fstab
คัดค้านการกล่าวถึง
มันไม่ได้มีอยู่ตามค่าเริ่มต้น แต่ทำไมมันควรจะเป็นถ้ามันว่างเปล่าเพราะค่าเริ่มต้นดีหรือไม่? มันอยู่ที่นั่นถ้าคุณต้องการมัน
การอ้างสิทธิ์ของการคัดค้านfstab
ถูกลอยไปรอบ ๆ เว็บเป็นระยะเวลาหนึ่งแล้ว
จากที่นี่ :
etc / fstab เลิกใช้แล้วใน Leopard
จากที่นี่ :
ฉันจะแนะนำให้แก้ไขไฟล์ / etc / fstab แต่เห็นได้ชัดว่าเลิกใช้แล้วใน Leopard และตอนนี้อาจถูกลบออกจาก Snow Leopard ...
นอกเหนือจากข้อเท็จจริงที่ว่าไม่มีการกล่าวถึงการคัดค้านในเอกสารประกอบเหตุใด Apple จึงเพิ่มอรรถประโยชน์สำหรับการแก้ไขไฟล์การกำหนดค่าที่เลิกใช้อย่างถูกต้อง
การอ้างอิงman vifs
:
NAME
vifs -- safely edit fstab
[...]
HISTORY
The vifs utility originates from Mac OSX 10.5.
ในขณะที่โปรแกรมต่อไปนี้ทำงาน (ลูปไม่สิ้นสุด, Ctrl-C เพื่อออก) จะไม่มีการติดตั้งดิสก์ด้วยเงื่อนไขที่เหมาะสมที่คุณสามารถควบคุมได้แน่นอนยิ่งขึ้น:
#include <CoreFoundation/CoreFoundation.h>
#include <DiskArbitration/DiskArbitration.h>
DADissenterRef BlockMount(DADiskRef disk, void *context)
{
DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault, kDAReturnNotPermitted, CFSTR("forbidden!"));
return dissenter;
}
int main (int argc, const char * argv[])
{
DAApprovalSessionRef session = DAApprovalSessionCreate (kCFAllocatorDefault);
if (!session)
{
fprintf(stderr, "failed to create Disk Arbitration session");
}
else
{
DARegisterDiskMountApprovalCallback(session, NULL, BlockMount, NULL);
DAApprovalSessionScheduleWithRunLoop(session, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
while (true) {
CFRunLoopRunInMode(kCFRunLoopDefaultMode, 60 /* seconds */, false);
}
DAApprovalSessionUnscheduleFromRunLoop(session, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
DAUnregisterApprovalCallback(session, BlockMount, NULL);
CFRelease(session);
}
return 0;
}
บันทึกเป็น main.c และคอมไพล์โดยใช้ข้อมูลต่อไปนี้ (คุณต้องการเครื่องมือสำหรับนักพัฒนา):
cc main.c -o mountstopd -framework Foundation -framework DiskArbitration