erlang 執行linux命令的兩種方法

2021-09-07 21:27:45 字數 1000 閱讀 3510

os模組提供了cmd函式可以執行linux系統shell命令(也可以執行windows命令)。返回乙個cmd命令的標準輸出字串結果。例如在linux系統中執行os:cmd("date"). 返回linux的時間。 這種比較簡單,一般情況下,也滿足了大部分需求。

當os.cmd(cmd) 滿足不了你的需求的時候,就可以用強大的open_port(portname, portsettings) 來解決了。最簡單的需求,我要執行乙個linux命令,而且還需要返回退出碼。os.cmd(cmd) 就有些捉急了。也不要以為有了open_port(portname, portsettings) 就可以完全替代os.com(cmd) 了。強大是需要代價的。

%% 優點:可以返回exit status 和執行過程

%% 缺點: 非常影響效能, open_port執行的時候,beam.smp會阻塞

當對本身系統的效能要求比較高的時候,不建議使用erlang:open_port(portname, portsettings) .

下面是一段很好用的**,返回exit status 和執行結果。

my_exec(command) ->port =open_port(, [stream, in, eof, hide, exit_status]),

result =get_data(port, ),

result.

get_data(port, sofar) ->

receive

} ->get_data(port, [sofar|bytes]);

->port !,

receive

->

true

end,

receive

->ok

after 1 -> %force context switch

okend,

exitcode =

receive

} ->code

end,

end.

Erlang系統執行

1,啟動系統 erl erl 解釋執行從命令列方式輸入的一到幾行引數 init get argument key 或者init get arguments 獲得系統啟動引數 erlang也能夠訪問從命令列執行命令所產生的變數的數值 如 erl sky aa bb cc 那麼 通過init get a...

Erlang模組與Erlang程式的執行方法

一 模組與程式檔案 erlang是一種函式式程式語言,當我們要完成乙個專案時,總不可能把所有的函式都定義在乙個程式檔案中,為了開發和維護方便,通常按邏輯功能劃分將其分別分散在多個程式檔案中。每個erlang程式檔案就是乙個模組,檔名的副檔名部分為.erl,模組的名稱必須與檔名稱中的主檔名完全相同 不...

執行linux命令,cmd命令

exec dir output print r output exec 函式解析 exec 語法 string exec string command,string array int return var exec 返回值 字串 exec 引數說明 command 需要執行的命令 array 是輸...