我正在我的计算机上用 C# 编写一个程序,该程序应该在远程 Raspberry Pi 上启动 Python 程序。目前,Python 代码只是'Hello'每秒打印一次。该程序应该永久运行。当我从 C# 启动此程序时,如果我的程序正在运行,我希望获得视觉反馈 - 我希望看到像 PuTTY 中一样的打印输出。以下代码适用于类似 的命令ls。但由于我的 Python 程序test.py无法完成——我从未得到输出——我陷入了连续循环。如何实时显示输出?这是我的代码:using Renci.SshNet;static void Main(string[] args){ var ssh = new SshClient("rpi", 22, "pi", "password"); ssh.Connect(); var command = ssh.CreateCommand("python3 test.py"); var asyncExecute = command.BeginExecute(); while (true) { command.OutputStream.CopyTo(Console.OpenStandardOutput()); }}
2 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
SSH.NETSshClient.CreateCommand
不使用终端模拟。
在没有终端仿真的情况下执行时,Python 会缓冲输出。所以你最终会得到输出,但只有在缓冲区填满之后。
为了防止缓冲,请将-u
开关添加到python
命令行:
var command = ssh.CreateCommand("python3 -u test.py");
至尊宝的传说
TA贡献1789条经验 获得超10个赞
如果您希望本地主机上的远程程序的输出,则远程程序(“test.py”)必须与本地主机通信。然后,运行 C# 程序的本地主机可以在从 RPi 收到消息时打印一些内容。通常,在 RPi 上启动 test.py 后,您可以向本地主机发送一条消息,例如“Started”或“0”,或任何您想要的消息。
如果您有一个运行 test.py 的活动 SSH 窗口,您可以直接从 RPi 打印到它。
- 2 回答
- 0 关注
- 129 浏览
添加回答
举报
0/150
提交
取消