【问题标题】:Process stops immediately after start进程在启动后立即停止
【发布时间】:2025-05-23 01:20:02
【问题描述】:

希望你能帮助我。我正在使用 MonoDevelop 在 Raspberry Pi 上进行编码。

我想用 C# 执行一个 python 脚本并从中读取。

class Program 
{
    public static void Main(string[] args)
    {
        Process p = new Process();
        p.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
        p.StartInfo.FileName = "sudo";
        p.StartInfo.Arguments = "python gpio.py";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.CreateNoWindow = true;
        p.StartInfo.RedirectStandardOutput = true;

        p.Start();
        p.BeginOutputReadLine();
        p.WaitForExit();
    }

    private static void OutputHandler(Object sender, DataReceivedEventArgs args) 
    {
        Console.WriteLine(args.Data);
    }
}

在调试时,我可以看到进程已退出 Click for image

但在 TaskManager 中我可以看到,该进程仍在运行。 该脚本还控制 gpio 引脚。即使“进程已退出”,脚本也会控制引脚(LED 开/关)。但我没有从 redirectOutput 得到任何东西。

为什么进程启动后立即退出(脚本有一段时间是真的。它不应该停止)?这是执行脚本的正确方法吗?
如果我从终端执行 Python 脚本,它工作正常。这不应该是脚本错误。 如果我启动一个过程,例如文件名“libreoffice”,也可以。

脚本位于“/bin/Debug/”(文件夹)中的项目文件夹中 任何人都可以设置执行权限。

谢谢,
问候

【问题讨论】:

  • 我认为问题是因为s​​udo,尝试运行已经sudo'ed的C#程序,然后使用python作为文件名和gpio.py作为参数。不过最后一个建议,不要直接用C#用Python来控制gpio的使用,看看这个:github.com/gusmanb/BCM2835Managed

标签: c# python linux process monodevelop


【解决方案1】:

正如@Gusman 所说,问题出在 sudo 上。按照建议,我现在使用DLL 来访问GPIO 引脚。即使没有完全支持 Raspberry Pi。

【讨论】:

    最近更新 更多