簡體   English   中英

在已經運行的shell中通過控制台運行erlang shell命令

[英]Running erlang shell command, via console, in an already-running shell

早上好 !

我正在嘗試在erlang shell和只通過腳本進行通信的外部函數(zenity)之間建立通信。(它只能運行命令行)

在我的程序中,erlang shell已經運行並生成了我需要的節點。 (因此打開另一個shell來運行這些函數不起作用,並且escript打開一個新的shell。我需要從我的主shell運行這些函數)

這就是我manualy所做的,並且想編寫腳本。

$ erl -name two@127.0.0.1 
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false]
Eshell V7.3  (abort with ^G)
(two@127.0.0.1)1> c(client). 
{ok,client}
(two@127.0.0.1)2> client:init(). 
true
(two@127.0.0.1)3> 

client:init()生成線程。 我通過一些功能與他們溝通。

從這里開始我的不同功能

client:<function>(<Args>).

但是一個劇本

erl -name two@127.0.0.1
c(client).
client:init()
client:<function>(<Args>).

顯然,它不起作用。

我可以稍微縮短一下

$ erl -name two@127.0.0.1 -s client init

但我仍然無法在創建的shell上運行函數,因為要調用的函數取決於Zenity的輸出,它只通過shell命令行進行通信

是否有通過腳本運行erlang命令的解決方案?

為什么要從zenity運行命令而不只是抓取結果? (或者你可以運行echo 。)

1> Port = open_port({spawn_executable, os:find_executable("zenity")}, [in, {line, 65536}, eof, {args, ["--calendar", "--title=Holiday Planner"]}]).
#Port<0.490> 
2> flush().
Shell got {#Port<0.490>,{data,{eol,"10/20/2016"}}}
Shell got {#Port<0.490>,eof}
ok

暫無
暫無

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

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