我正在我的計算機上用 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 關注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消