【问题标题】:Windows service porting to linuxWindows 服务移植到 linux
【发布时间】:2010-04-21 16:59:40
【问题描述】:

我正在移植一个在启动时在 Windows 中作为后台服务运行的应用程序,我们正在将该应用程序移植到 linux(SUSE Enterprise 服务器),我对 linux 完全陌生。有人可以帮助我如何进行此操作。喜欢

  1. 我应该构建 linux 可执行文件
  2. 构建二进制文件后,我应该对 linux 启动文件进行哪些更改才能运行此可执行文件
  3. 我的服务如何注册回调函数以在我的服务运行时修改或更改或向其发送命令

【问题讨论】:

    标签: windows linux porting


    【解决方案1】:
    1. 是的,您应该构建一个 Linux 二进制文件。你可能想改写你的问题,因为我怀疑这是你想要的答案:-)
    2. 您通常应该创建一个名为“init”的文件,该文件位于 /etc/init.d 中。 Novell 有一个指南online which you can use to author the file. 请注意,虽然 init 文件很常见,但让操作系统使用它的确切方法因发行版而异。
    3. 这对您来说将是一个显着的变化。如果您正在执行简单的操作,例如重新加载配置文件,您可以使用信号功能,尤其是通常用于此目的的 SIGHUP/HUP 信号。如果您需要与您的守护程序进行扩展通信,您可以使用 UNIX 域套接字(将其视为命名管道)或网络套接字。

    您需要完成的另一项任务是守护您的应用程序。通常这是通过首先 fork() 处理您的进程,然后重定向子进程中的 stdin/stdout 管道来完成的。更多细节可以阅读this document来回答

    【讨论】:

      【解决方案2】:

      how-to-migrate-a-net-windows-service-application-to-linux-using-mono

      在 Linux 下,deamons 是简单的后台进程。没有像在 Windows 中那样使用特殊的控制方法(例如start()stop())。将您的服务构建为一个简单的(控制台)应用程序,并在后台运行它。您可以使用daemonize 之类的工具将程序作为 Unix 守护进程运行。

      【讨论】: