Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

196
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!