Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

184
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda