我正在尝试从Mono调用bash脚本。因为脚本反过来调用“pico2wave”(Android的Pico TTS语音的Linux实现),所以对脚本的调用必须阻止执行Mono代码。
我当然可以修改脚本来触摸/ rm作为锁的文件,但是有没有办法在Mono代码中完成这个任务?
感谢您的任何建议,
的Carsten
答案 0 :(得分:0)
您可以使用Process.WaitForExit
等待(阻止)脚本执行完毕。
设置等待关联进程退出的时间段, 并阻止当前执行的线程,直到时间结束 或者这个过程已经退出。要避免阻止当前线程,请使用 已退出的活动。
休眠5秒然后退出的示例shell脚本,名为shell-block.sh
:
#!/bin/bash
sleep 5
exit 0
示例C#:
using System;
using System.Diagnostics;
namespace consoleblocking
{
class MainClass
{
public static void Main (string[] args)
{
Console.WriteLine ("Non-blocking");
Process.Start ("./shell-block.sh");
Console.WriteLine ("Blocking");
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "./shell-block.sh";
startInfo.Arguments = "";
using (var myProcess = Process.Start(startInfo))
{
myProcess.WaitForExit();
}
}
}
}