簡體   English   中英

運行沒有終端依賴的erlang應用程序

[英]Run erlang application without terminal depending

我有erlang應用程序:* .app文件和一些* .erl文件。 我編譯了所有這些。 在終端我啟動erl和那里application:start(my_application). ,一切都好,但如果我關閉終端應用程序也關閉。 如何在沒有終端的情況下運行應用程序?

謝謝。

您可能希望使用-noshell選項來進行erl 語法是

erl -noshell -s Module Function Arguments

所以在你的情況下,這可能是

erl -noshell -s application start my_application

這應該允許您(例如,如果您在Unix / Linux上)啟動應用程序作為后台進程並使其保持運行。

一個有用的變體是調用init模塊的stop/0函數,以便Erlang環境在完成函數運行后停止。 如果您想運行一個簡單的一次性函數並將輸出傳遞給其他進程,這會派上用場。

因此,例如,要管道more你可以做

erl -noshell -s mymodule myfunction -s init stop | more

最后,您也可以使用escript命令將Erlang代碼作為腳本而不是編譯代碼運行,如果它對您的情況有意義的話。

希望有所幫助。

處理這種情況的正確方法是構建一個包含您的應用程序並將系統作為所謂的嵌入式系統運行的版本。 這個版本將完全獨立(它將包含erts和所有lib,如kernel,std,mnesia等)。 一開始,新進程將不會連接到shell進程。 它將是操作系統進程,因此您可以使用管道連接到它。 所有腳本都包含在OTP中。 以下是一些信息: http//www.erlang.org/doc/design_principles/release_structure.html它可能看起來很復雜,但像鋼筋這樣的工具可以為您做任何事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM