进程在启动后立即停止

时间:2016-07-26 16:08:51

标签: c# python linux process monodevelop

希望你能帮助我。我正在使用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 on / off),即使“Process has exited”也是如此。但是我没有从redirectOutput获得任何东西。

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

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

谢谢,
问候

1 个答案:

答案 0 :(得分:0)

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