La derrota de almacenamiento en caché de archivos CIFS en Windows / forzar “refrescar”

StackOverflow https://stackoverflow.com/questions/4071183

  •  28-09-2019
  •  | 
  •  

Pregunta

Estoy modificación de archivos en un sistema UNIX y acceder a ellos en una máquina Windows. El servidor ejecuta la samba y hay una cierta cantidad de almacenamiento en caché realizado por el cliente. Cuando modifico el archivo en el lado de UNIX, la única forma fiable a ver la nueva versión del archivo es hacer clic derecho en el Explorador de Windows y seleccione "refresco".

Estoy buscando el equivalente API de Windows de un clic derecho en el Explorador de Windows y seleccionando "refresco". Hay otras preguntas sobre SO sobre el envío de un mensaje a Explorer para hacer que se actualice, pero eso no es lo que quiero: no me importa sobre el contenido de la ventana del explorador y yo preferiría que ni siquiera necesita una abierta a la meta directorio. Sólo quiero integrar el efecto contraproducente caché en mi programa, así que evitar que se muestren datos obsoletos.

¿Fue útil?

Solución

CIFS incluye un sistema de notificación para las actualizaciones. registros Explorer para esto, y reflejarán los cambios que Samba lo envía. No estoy al tanto de cualquier otro mecanismo de API de Windows para decirle que tiene que hacer una actualización.

Samba soporta Linux inotify, por lo que debe recoger automáticamente cualquier cambio en las carpetas que está mostrando el Explorador y enviar actualizaciones Explorer.

¿Está utilizando una versión reciente de Samba-suficiente, y ha sido construido Samba con soporte inotify? Esto es, obviamente, sólo Linux. Por otro Unix, se podría implementar una funcionalidad equivalente. El código en cuestión está en smbd/notify_internal.c.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top