use*_*392 13 c# linux bash terminal
我希望我的 c# 应用程序(我在树莓派上执行)在启动时运行 bash 脚本......
基本上:脚本位于/etc/init.d并命名为mnw. 我希望每当我的 c# 应用程序启动时,它都应该执行 mnw 脚本的一部分。
如果它是在终端中编写的,它将如下所示:
cd /etc/init.d
./mnw stop
Run Code Online (Sandbox Code Playgroud)
我希望这在开始时发生public static void Main(),我一直在尝试
ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "/dev/init.d/./mnw", Arguments = "stop", };
Process proc = new Process() { StartInfo = startInfo, };
proc.Start();
Run Code Online (Sandbox Code Playgroud)
但它说停止是一个意想不到的论点,有什么想法吗?
fli*_*erg 10
我从未ProcessStartInfo在 Mono / Linux 上使用过,但是您是否尝试过通过 bash 调用?
ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "/bin/bash", Arguments = "/dev/init.d/mnw stop", };
Process proc = new Process() { StartInfo = startInfo, };
proc.Start();
Run Code Online (Sandbox Code Playgroud)
此外,可执行位没有问题mnw?
3dG*_*ber 10
虽然使用Process已接受的答案中的类有效,但我想补充一点,有一个名为CliWrap 的库,它使像这样的 CLI 调用变得更加容易:
以OP问题为例:
var result = await Cli
.Wrap("/dev/init.d/mnw")
.WithArguments("stop")
.ExecuteBufferedAsync();
// result contains:
// -- result.StandardOutput (string)
// -- result.StandardError (string)
// -- result.ExitCode (int)
// -- result.StartTime (DateTimeOffset)
// -- result.ExitTime (DateTimeOffset)
// -- result.RunTime (TimeSpan)
if (result.ExitCode != 0)
Console.WriteLine("Command failed")
Run Code Online (Sandbox Code Playgroud)
感谢@Tyrrrz这个库!
| 归档时间: |
|
| 查看次数: |
19171 次 |
| 最近记录: |