utilidad una todos símbolo solucion signo sale prohibido prohibición pro parpadeante muestra mis macbook mac interrogacion encender discos con carpeta arranque archivos aparece c++ macos cocoa boost filesystems

c++ - una - símbolo de prohibición macbook pro



Cómo encontrar si una unidad montada realmente existe en Mac (2)

Hay un método en NSFileManager que le permite ver fácilmente los volúmenes montados:

- (NSArray*) mountedVolumeURLsIncludingResourceValuesForKeys:option - Devuelve una matriz de URL que identifica los volúmenes montados disponibles en la computadora.

Sin embargo, no sé cómo se maneja esto con las monturas paradas. También deberá averiguar si estos volúmenes montados son volúmenes de red o imágenes de disco.

Si desea notificaciones cuando los volúmenes vienen y se van, puede usar la API de eventos del sistema de archivos . Es un nivel un poco más bajo, pero básicamente puedes pedir que me ''notifique cuando cambie la estructura en /Volumes/* .

Lo que realmente estaba tratando de lograr es averiguar cuándo se desconectó un disco que había montado desde la red. Para lo cual comencé con un enfoque muy simple, utilicé:

boost :: filesystem :: existe

en la ruta montada de la unidad (que podemos encontrar en / Volumes /). por ejemplo, para un disco en la computadora: smb: // XYZ / drive después del montaje, puedo verlo como: / Volumes / drive y el último fue el disco en el que estaba usando boost :: filesystem :: exists,

Así que esperaba que tan pronto como desconectara la red, el volumen montado dentro de / Volumes se borrará inmediatamente y todo funcionará de manera sencilla.

PERO, más tarde me doy cuenta de que en la desconexión de la red, OSX tarda todo el tiempo en borrar la unidad del directorio / Volúmenes.

¿Hay una API de Apple que pueda decir si el volumen total, que aparece en / Volumes es válido o no?

Gracias por adelantado.


Desea las notificaciones de NSWorkspace :

  • NSWorkspaceDidRenameVolumeNotification
  • NSWorkspaceDidMountNotification
  • NSWorkspaceWillUnmountNotification
  • NSWorkspaceDidUnmountNotification

Las últimas tres notificaciones contienen una clave @"NSDevicePath" en el diccionario userInfo . Mientras que WillUnmount no se envía si el dispositivo se elimina a la fuerza, DidUnmountDidUnmount hace. Usando una combinación de los dos, puedes obtener una advertencia adecuada para "desmontar bien" los volúmenes de la red para manejar las cosas en un escenario ideal, pero en todos los casos, nunca tuve problemas reales confiando en DidUnmount para decirme que un volumen desapareció . Utilizo esto en el código de envío en una aplicación que salió desde 2003.