濮阳杆衣贸易有限公司

主頁 > 知識庫 > Erlang中執(zhí)行l(wèi)inux命令的兩種方法

Erlang中執(zhí)行l(wèi)inux命令的兩種方法

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

os.cmd(Cmd)

os模塊提供了cmd函數(shù)可以執(zhí)行l(wèi)inux系統(tǒng)shell命令(也可以執(zhí)行windows命令)。返回一個Cmd命令的標(biāo)準(zhǔn)輸出字符串結(jié)果。例如在linux系統(tǒng)中執(zhí)行os:cmd("date"). 返回linux的時間。 這種比較簡單,一般情況下,也滿足了大部分需求。

erlang:open_port(PortName, PortSettings)

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

%% 優(yōu)點:可以返回exit status 和執(zhí)行過程
%% 缺點: 非常影響性能, open_port執(zhí)行的時候,beam.smp會阻塞

當(dāng)對本身系統(tǒng)的性能要求比較高的時候,不建議使用erlang:open_port(PortName, PortSettings) .

下面是一段很好用的代碼,返回exit status 和執(zhí)行結(jié)果。

復(fù)制代碼 代碼如下:

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.

標(biāo)簽:泰安 武威 濟源 安徽 廣東 濟寧 汕頭 臺州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Erlang中執(zhí)行l(wèi)inux命令的兩種方法》,本文關(guān)鍵詞  Erlang,中,執(zhí)行,linux,命令,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Erlang中執(zhí)行l(wèi)inux命令的兩種方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Erlang中執(zhí)行l(wèi)inux命令的兩種方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    汕头市| 田林县| 孝昌县| 德昌县| 会泽县| 泗洪县| 丹东市| 镶黄旗| 桃园市| 涟源市| 新和县| 孝感市| 凤翔县| 汤阴县| 南木林县| 射阳县| 民县| 兴隆县| 淳安县| 济源市| 四会市| 衡山县| 渝北区| 阿克| 云和县| 长治市| 姜堰市| 大名县| 乌兰浩特市| 叙永县| 海安县| 夏河县| 广宁县| 吴江市| 涞源县| 玉树县| 滨州市| 封开县| 马关县| 迭部县| 怀安县|