轉自波哥的譯文,必須轉過來,太有價值了!原文地址在這里。以下為原文內容:

本文譯自 原文鏈接,語言上做了精煉和排版的變更,以便更簡潔明了。
Delphi 開始支持 Linux 平台為 Delphi 開發人員開辟了創建 Linux 服務器應用程序的可能。但遺憾的是,目前 RAD Studio IDE 並不包括創建 Linux 守護程序(Windows中的服務)。
【注意】本文假設您已經能夠配置好 Linux 編譯環境並知道如何在 Linux 命令行啟動它。否則請參考:
- http://chapmanworld.com/2017/02/28/embarcadero-delphi-linux-bootcamp/
- http://chapmanworld.com/2016/12/29/configure-delphi-and-redhat-or-ubuntu-for-linux-development/
【守護進程】
在Linux操作系統下,守護進程只是一個沒有標准輸入和輸出流的進程。它在后台運行並不接受鍵盤輸入也不會向屏幕輸出(當然可以輸出日志)。
【創建服務】
1、創建一個控制台項目,並添加 Linux64 為編譯目標。
2、uses 中加入 Posix.Unistd 單元,以便引用其中的 fork 函數創建子進程。
3、在程序的入口地方加入對 fork 的調用,以創建子服務進程。注意 fork 函數的返回子進程的進程 ID,我們有可能需要將它寫入到一個配置文件中,以便控制服務的結束(這是后話,原文中沒說),下面的示例只是做了一個簡單的判斷直接退出了。
4、fork 成功后調用 exit 退出當前進程,如果返回值為0,代表自己是子進程。然后執行后面的進程就可以了。
program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, Posix.Unistd; begin try if fork()<>0 then begin exit; end; ... except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
5、編譯並發布到目標計算機運行進程。
【創建服務】
這一步在不同的平台上不太一樣,早期的 Linux 是創建一個腳本,放到 init.d 里,然后一步步注冊。新的 centos 是在 /lib/systemd/system 添加 xxx.service 定義。具體就參考相應的文檔配置就可以了。
