使用delphi 10.2 開發linux 上的Daemon

來源:互聯網
上載者:User

標籤:osi   運行   避免   target   今天   project   http   功能   response   

   delphi 10.2 支援linux, 而且官方只是支援命令列編程,目地就是做linux 伺服器端的開發。

既然是做linux伺服器端的開發,那麼普通的命令列運行程式,然後等待開一個黑視窗的方式就

太low了(目前就有個別語言大咖,經常在Windows 上開個黑視窗,看起來非常噁心),那麼如果

避免這個尷尬的問題?

    其實Linux 下也有類似windows 服務的功能,Linux Daemon 就是其中的一種方式,命令列運行後

直接返回,同時在後台建立一個同樣的進程。接受用戶端的訪問。常見的一些linux 服務基本上都是

這樣工作的。例如著名apache,mysql 等。具體的linux Daemon 的介紹,請參照本篇文章。

  今天我們就使用delphi 來開發一個背景http server, 來說明delphi 如何開發linux 的Daemon.

建立工程,建一個控制台應用。

因為這個只能在linux 運行,所以直接加入linux 支援。

因為我們要做http server, 要放一些控制項,因此再加一個datamodule.

 

 然後在datamodule 上放一個Tidhttpserver 控制項。

在oncommandget 裡面加入以下事件。

procedure Tdmf.IdHTTPServer1CommandGet(AContext: TIdContext;  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);begin     AResponseInfo.ContentText:=‘I am delphi for linux service‘;end;

好了。

我們回到工程檔案

輸入以下代碼

program Project2;{$APPTYPE CONSOLE}{$R *.res}uses  Posix.Unistd,  Posix.SysTypes,  System.SysUtils,  dmp in ‘dmp.pas‘ {dmf: TDataModule};procedure daemon;begin   dmf:=Tdmf.Create(nil);   dmf.IdHTTPServer1.Active:=True;  try    repeat      sleep(10 * 1000);    until False;  finally   dmf.Free;  end;end;var   pid: pid_t;begin  pid := fork;  if pid = 0 then   begin    writeln(‘starting service‘);     daemon;   end;end.

編譯運行。

首先我們看一下系統中的運行進程: ps -ef

裡面沒有Project2 的任何資訊。

我們運行這個程式

運行完後,程式立即就返回了

我們在看看系統進程裡面的情況

我們可以看見這個Project2 依然在進程中。

那麼這個進程是否可以正常工作呢?

我們開啟瀏覽器,看看情況如何?

 

可以看見這個這個程式在後面啟動並執行非常正常。

當然了,由於這是一個demo, 我沒有做太多的處理,其實由於daemon 進程無法與前台直接互動,我們以後寫這種應用時。

應該多用 日誌 檔案來記錄運行情況,一般出問題時,能夠快速的找到問題的根源。

那麼這個程式一直在後台運行,我們再次編譯和發布時,就沒辦法覆蓋了,怎麼關掉這個後台進程呢?

辦法很簡單,也很粗暴(反正我喜歡)。

使用linux 的kill 命令。

找到該應用的pid, 直接幹掉

然後使用ps -ef 看看

Project2 已經不在了,整個世界清靜了。

 

使用delphi 10.2 開發linux 上的Daemon

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.