进程启动后立即停止
Process stops immediately after start
希望你能帮助我。我正在使用 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 脚本,它工作正常。应该不是脚本错误。
如果我开始一个过程,例如文件名 "libreoffice",它也有效。
脚本位于“/bin/Debug/”(文件夹)中的项目文件夹中
为任何人设置执行权限。
谢谢,
问候
正如@Gusman 所说,问题出在 sudo 上。按照建议,我现在使用 DLL 来访问 GPIO 引脚。即使 Raspberry Pi 不完全支持。
希望你能帮助我。我正在使用 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 脚本,它工作正常。应该不是脚本错误。
如果我开始一个过程,例如文件名 "libreoffice",它也有效。
脚本位于“/bin/Debug/”(文件夹)中的项目文件夹中 为任何人设置执行权限。
谢谢,
问候
正如@Gusman 所说,问题出在 sudo 上。按照建议,我现在使用 DLL 来访问 GPIO 引脚。即使 Raspberry Pi 不完全支持。