【问题标题】:How to spawn Linux process from Windows application?如何从 Windows 应用程序生成 Linux 进程?
【发布时间】:2010-10-22 17:55:37
【问题描述】:

我的交互式 32 位 Windows 应用程序(现在从 Delphi [Ent] 2007 迁移到 2009 年)使用命令行交互来生成执行计算密集型任务的子进程,这些子进程反过来编写 GUI 父应用程序解析的文本文件和分析 - 以交互式图形显示结果。

我可以访问多处理器(多用户)Linux 集群(通过 ssh),并希望将繁重的工作转移到该集群。我的问题是如何从我的 Windows 应用程序中生成 Linux 中的进程。我可以设想使用安全 FTP 来放置和获取文件,但不确定如何在 Linux 中生成子进程。

一些进一步阅读的线索会很好 - 但代码/伪代码将是理想的。我可以想象这可能更多是关于 Windows-Linux 交互而不是 Delphi。

【问题讨论】:

    标签: windows linux delphi spawning


    【解决方案1】:

    如果您可以访问 ssh,一种选择是通过它发出命令。 例如:

    ssh user@host ls -l ~
    

    将在 ssh 终端中显示用户主目录中的文件。我不确定这是否是你真正想要的。但它可能会奏效。

    如果你这样做,你几乎肯定想要设置SSH password less logins

    但是,更理想的解决方案可能是在 linux 机器上设置一个守护程序,其唯一工作是在后台运行特定的长时间运行的任务,并让您稍后获取结果。

    【讨论】:

    • 我不知道这种远程命令风格 - 反正很容易尝试。
    【解决方案2】:

    您必须在 Linux 机器上安装一些东西才能运行该过程。您可能会发现可以从 Windows 安装和访问的某种集群或批处理作业提交 API。您可能必须编写自定义服务器。如果您可以从 Windows 驱动 ssh 进程并且在 Linux 端安装了 sshd,则您可能可以通过 ssh 运行所有内容。但我的偏好是在 Linux 端编写一个 web 服务或简单的 CGI 脚本,旨在获取您的参数和数据,并通过普通的旧 http(或 https,视情况而定)返回结果。

    不管怎样,这将不仅仅包含在 Windows 端的编码。

    【讨论】:

    • 我同意这可能是理想的解决方案,但正如您所建议的那样,它为我提供了更多的学习曲线 - 从长远来看,这可能是一件好事!
    • +1 使用自定义服务器有很多优势。尤其是(取决于编写它的语言)可以在 Windows(本地)上编写和调试的东西,然后部署在许多不同的平台上,即使没有 sshd。如果您使用 FPC 或 Mono,您可以利用您的 Pascal/Delphi 知识,这样您就有了先机。它还有一个好处是控制过程和读/写数据使用相同的机制。也更容易在多处理器服务器节点上进行扩展。
    • Argalatyr - 您不必过早地编写自定义服务器,您必须安装 nginx 或 lighttpd 并设置它们以通过 CGI 或 FastCGI 接口在给定路径调用您的工作应用程序。服务器将负责运行许多工作应用程序并在不再需要时关闭它们。我认为你最好学习 nginx 而不是 ssh。如果基于文本的 HTTP 会膨胀数据,那么如果客户端库和服务器都支持,那么 HTTP 支持透明的 Zip/Unzip。
    【解决方案3】:

    我会下载完整的“putty”包。

    除了出色的安全 shell 终端外,它还包括用于安全传输文件的 PSCP 和用于通过 SSH 远程执行命令的 PLINK。

    提示:您需要设置完整的公钥/私钥配置,PLINK 才能在没有烦人的密码提示的情况下工作。有一个有用的指南 http://unixwiz.net/techtips/putty-openssh.html>here。

    【讨论】:

    • 我正在使用 putty 但忽略了 plink - 非常有帮助,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2012-09-21
    相关资源
    最近更新 更多