¿Cómo verificar si el archivo está en uso?

Tengo una aplicación c ++ y necesito saber si alguien está usando un archivo. Estoy de acuerdo con ejecutar cualquier comando de shell, pero no quiero ejecutar el comando lsof para este propósito, ya que creo que no puedo asumir con seguridad que lsof estará disponible en todos los sistemas operativos, ¿o puedo asumirlo con seguridad?

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .
Cerramos preguntas que hacen múltiples preguntas relacionadas. Siéntase libre de mirar Stack Overflow para sus preguntas específicas de código , cualquier cosa sobre API / SDK que no sea, ¿dónde los obtengo? está fuera de tema aquí. Tenga una lectura cuidadosa del centro de ayuda aquí y también. Las reglas se hacen cumplir ya que estos sitios son de alta visibilidad y alto tráfico. Considere que está preguntando esto en la plaza central, Nueva York, una exhibición muy pública. Por último, y lo más importante, bienvenido a Ask Different.

Respuestas (2)

Puede suponer que lsofse envía en todos los macOS y también puede verificar la existencia de ese comando antes de llamarlo, registrando un mensaje de error amigable agradable o un mensaje de registro como mejor le parezca si desea codificar a la defensiva.

También puede preguntar en un sitio centrado en el código qué API existe para verificar la existencia del archivo si desea ingresar al código C ++ específico (que estaría fuera de tema aquí), pero a partir de su pregunta, suponiendo que puede llamar a cualquier herramienta de línea de comando, su el diseño general está bien para ejecutarse en un programa C++ en macOS.

Amigo, podrías usar lsof, o el 'fusor' incorporado.

sudo fuser -fu [FILEPATH AND FILENAME]

F.