婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Erlang中執行linux命令的兩種方法

Erlang中執行linux命令的兩種方法

熱門標簽:萬利達綜合醫院地圖標注點 股票配資電銷機器人 實體店地圖標注怎么標 地圖標注如何弄全套標 電銷機器人 深圳 南京電銷外呼系統哪家好 外呼系統會封嗎 武漢AI電銷機器人 在電子版地圖標注要收費嗎

os.cmd(Cmd)

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

erlang:open_port(PortName, PortSettings)

當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({spawn, Command}, [stream, in, eof, hide, exit_status]),
    Result = get_data(Port, []),
    Result.

get_data(Port, Sofar) ->
    receive
    {Port, {data, Bytes}} ->
        get_data(Port, [Sofar|Bytes]);
    {Port, eof} ->
        Port ! {self(), close},
        receive
        {Port, closed} ->
            true
        end,
        receive
        {'EXIT',  Port,  _} ->
            ok
        after 1 ->              % force context switch
            ok
        end,
        ExitCode =
            receive
            {Port, {exit_status, Code}} ->
                Code
        end,
        {ExitCode, lists:flatten(Sofar)}
    end.

標簽:泰安 武威 濟源 安徽 廣東 濟寧 汕頭 臺州

巨人網絡通訊聲明:本文標題《Erlang中執行linux命令的兩種方法》,本文關鍵詞  Erlang,中,執行,linux,命令,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Erlang中執行linux命令的兩種方法》相關的同類信息!
  • 本頁收集關于Erlang中執行linux命令的兩種方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 海淀区| 定远县| 彩票| 莒南县| 永顺县| 鄂尔多斯市| 怀集县| 迭部县| 淮阳县| 德州市| 青冈县| 荣成市| 金乡县| 肥城市| 乌拉特中旗| 蒲城县| 陇川县| 扶余县| 岫岩| 依兰县| 克拉玛依市| 潜山县| 永德县| 壤塘县| 南川市| 苏州市| 凌海市| 顺义区| 游戏| 万载县| 马山县| 甘孜| 德保县| 屯门区| 苗栗县| 沙雅县| 玛曲县| 洞头县| 利川市| 赣州市| 酉阳|