在写入文件时阻止rsync运行

时间:2014-09-18 10:09:08

标签: c#

在更新当前加载的文件之前,我使用以下代码来停止任何正在进行的rsync进程:

try
{
    Process[] rsyncProcesses = Process.GetProcessesByName("rsync");
    foreach (Process p in rsyncProcesses)
    {
        p.Kill();
    }
}
catch (Exception e)
{
    Debug.WriteLine("Failed to kill Rsync process");
    return RepoStateMachine.FsmEvent.Failure;
}

然而,一旦评估了这些行,就没有什么可以阻止rsync进程启动(再次)。有没有一种很好的方法可以阻止它们在短时间内启动,也就是说你可以创建某种锁,然后在文件写入完成时释放它?

服务器上运行的c#代码无法控制何时可以启动rsync进程 - 这是在远程计算机上手动启动的。

1 个答案:

答案 0 :(得分:0)

我会回答我自己的问题,因为我做了更多的思考/研究。

我认为最好暂停sshd服务,然后在写完文件时继续使用。

ServiceController sshdService = new ServiceController("sshd");
sshdService.Pause();
...
sshdService.Continue();