gpt4 book ai didi

linux - Mono:如何以阻塞方式执行 shell 脚本?

转载 作者:太空宇宙 更新时间:2023-11-04 13:02:59 25 4
gpt4 key购买 nike

我正在尝试从 Mono 调用 bash 脚本。因为脚本依次调用“pico2wave”(Android 的 Pico TTS 语音的 Linux 实现),对脚本的调用必须阻止 Mono 代码的执行。

我当然可以修改脚本来 touch/rm 文件作为锁,但是有没有办法在 Mono 代码中完成这个任务?

谢谢你的建议,

卡斯滕

最佳答案

您可以使用 Process.WaitForExit 等待(阻止)直到您的脚本执行完毕。

Process.WaitForExit Method

Sets the period of time to wait for the associated process to exit, and blocks the current thread of execution until the time has elapsed or the process has exited. To avoid blocking the current thread, use the Exited event.

休眠 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();
}
}
}
}

关于linux - Mono:如何以阻塞方式执行 shell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33456877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com