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 是輸...