Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

189
Vistas
¿Cómo bloquear/desbloquear un archivo a través del proceso?

Usando C# ejecutándose en mono en Linux, tenga en cuenta que el siguiente código funciona bien en Windows puede bloquear un archivo a través del proceso pero no en Linux a través de mono (ubuntu 14.04)

 new FileStream("myfile.lock",FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.None);

investigación de Internet, debería poder hacerlo con bloqueo de aviso

 FileStream.Lock

sin embargo, no funciona. probado con dos procesos en ubuntu 14.04, ambos pueden ejecutar "FileStream.Lock(0, int.MaxValue)". Espero que el último falle con la excepción del código fuente .

alguien sabe hay alguna solucion?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Obtenga ayuda de la lista de correo mono " http://mono.1490590.n4.nabble.com/File-Locking-td4663839.html "

a continuación se muestra la cita de respuesta de "Edward Ned Harvey (mono)"

Un poco sorta. El problema subyacente es que OSX, Linux y Windows tienen diferentes construcciones de bloqueo de archivos subyacentes y, por supuesto, existe cierta variabilidad incluso sobre qué sistema de archivos se está utilizando. No descubrí a fondo todas las respuestas para cada sistema operativo o sistema de archivos, y no sé en qué situaciones será lo suficientemente bueno, pero esto es lo que terminé usando, funciona en las condiciones que necesitábamos para que funcionara:

 using (var foo = new FileStream(filePath, FileMode.Open,FileAccess.ReadWrite, FileShare.None)) { // must include Write access in order to lock file foo.Lock(0, 0); // 0,0 has special meaning to lock entire file regardless of length }

Para Windows, basta con especificar FileAccess y FileShare. Para Linux, al menos ext4, los archivos se pueden leer simultáneamente independientemente de lo que especifique para FileAccess y FileShare. El método Lock() hace una especie de bloqueo suave. El sistema operativo no lo hace cumplir, pero al menos en todas las situaciones que probamos, otras aplicaciones cliente respetan el bloqueo. No investigué más profundamente.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda