该代码将阻塞,直到Linux进程自身结束:

cSSH.Connect()
cSSH.RunCommand("<our path>linux_process”)  <<< BLOCKS UNTIL linux_process ENDS ITSELF
cSSH.Disconnect()
cSSH.Dispose()


因此,然后在RunCommand字符串的末尾添加“&”;它不会阻止RunCommand,但会在应用程序从名为.RunCommand的函数返回以启动Linux进程时过早地结束Linux进程:

cSSH.Connect()
cSSH.RunCommand("<our path>linux_process &”)
cSSH.Disconnect()
cSSH.Dispose()

return      <<<<<<  CAUSES linux_process TO IMMEDIATELY END

最佳答案

解决方案是仅启动一个调用SSH.NET .RunCommand()的.NET线程,该线程将阻塞,直到Linux可执行文件自身结束为止。此时,.RunCommand()返回,.NET线程继续运行,在我的情况下,该线程通过简单地返回。

我不知道为什么要投票。

07-24 14:26