Я пытаюсь получить вновь подключенный диск (Pen Drive) MOUNT POINT в ОС MA C с кодом C - PullRequest
3 голосов
/ 22 января 2020

Я новичок в MA C OS X. Я хочу получить Точка монтирования из вновь подключенного диска (Pen Drive) . Я уже попробовал некоторый код и получил путь монтирования из команды

diskutil info disk1S2 | grep \ "Mount Point: \" | awk '{print $ 3}'

, где disk1S2 равно Идентификатор вновь подключенного диска.

Но я хочу получить точку монтирования от C код вне зависимости от команды .

Итак, попробовал этот код

#include <stdio.h>
#include <DiskArbitration/DiskArbitration.h>
#include  <CoreFoundation/CoreFoundation.h>
#include <IOKit/IOKitLib.h> 
#include  <DiskArbitration/DASession.h>
#include <stdlib.h>
#include <strings.h>

#define MAXPATHLEN 500

void hello_disk(DADiskRef disk, void *context){
    CFDictionaryRef diskinfo,dict;
    diskinfo = DADiskCopyDescription(disk);
    CFURLRef fspath = CFDictionaryGetValue(dict,&kDADiskDescriptionVolumePathKey);
    char buf[MAXPATHLEN];
    if (CFURLGetFileSystemRepresentation(fspath, false, (UInt8 *)buf, sizeof(buf))) {
        printf("Disk %s mounted at %s\n",DADiskGetBSDName(disk),buf);
        // Print the complete dictionary for debugging. 
        CFShow(diskinfo);
    }else {
        // Something is *really* wrong. /
    }
}

void goodbye_disk(DADiskRef disk, void *context){
    printf("disk %s disappeared\n", DADiskGetBSDName(disk));
}

int main(){
    DASessionRef session;

    session = DASessionCreate(kCFAllocatorDefault);

    DARegisterDiskAppearedCallback(session, NULL, hello_disk, NULL);
    DARegisterDiskDisappearedCallback(session, NULL, goodbye_disk, NULL);

    DASessionScheduleWithRunLoop(session,CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);

    CFRunLoopRun();

    CFRelease(session);
    exit(0);
}

, и я запускаю этот код с помощью этой команды

g cc DAD. c -o DAD -framework DiskArbitration -framework Foundation

но я получаю эту ошибку

Ошибка сегментации: 11

  • Почему я получаю эту ошибку ?
  • Как получить точку монтирования в ОС MA C?
...