[英]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.