Mais StackOverflow é voltado, mas não posso acreditar que algo tão simples já não exista. Aqui está o código C # (fique à vontade para modificá-lo, hackeado em conjunto rápido):
using System;
using System.IO;
using System.Text;
using System.Threading;
class LockFile
{
public static void Main(String[] args)
{
if (args.Length > 2)
{
Console.WriteLine("Usage: lockfile <file> <wait_in_ms>");
Environment.Exit(0);
}
string path = args[0];
try
{
File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None);
Thread.Sleep(int.Parse(args[1]));
}
catch (FileNotFoundException e)
{
Console.WriteLine("File not found, exiting.");
Environment.Exit(0);
}
}
}
Uso:
lockfile c:\somefile.txt 30000
bloqueia o arquivo especificado por 30 segundos. Ao tentar acessá-lo, você receberá uma mensagem como esta:
Aqui está um binário compilado, o framework .NET requerido. Vou recodificá-lo em outro idioma se você precisar de um binário nativo, basta perguntar nos comentários:)