Không man fstab
phải cũng không man diskarbitrationd
(xem ở đây chẳng hạn) đề cập đến sự phản đối /etc/fstab
.
Nó không có ở đó theo mặc định, nhưng tại sao nó phải như vậy, nếu nó chỉ trống vì mặc định là tốt? Nó ở đó nếu bạn cần.
Khiếu nại về sự phản đối fstab
đã nổi trên mạng một thời gian.
Từ đây :
etc / fstab không được dùng trong Leopard
Từ đây :
Tôi sẽ đề nghị chỉnh sửa tệp / etc / fstab, nhưng dường như điều đó không được chấp nhận trong Leopard, và có lẽ hiện đã bị xóa khỏi Snow Leopard ...
Ngoài thực tế là không có đề cập đến sự phản đối trong tài liệu của mình, tại sao Apple lại thêm các tiện ích để chỉnh sửa đúng các tệp cấu hình không dùng nữa?
Trích dẫn man vifs
:
NAME
vifs -- safely edit fstab
[...]
HISTORY
The vifs utility originates from Mac OSX 10.5.
Trong khi chương trình sau chạy (vòng lặp vô hạn, Ctrl-C để thoát), sẽ không có đĩa nào được gắn, với điều kiện thích hợp, bạn có thể điều khiển nó tốt hơn tất nhiên:
#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;
}
Lưu dưới dạng main.c và biên dịch bằng cách sử dụng các mục sau (bạn cần Công cụ dành cho nhà phát triển):
cc main.c -o mountstopd -framework Foundation -framework DiskArbitration