濮阳杆衣贸易有限公司

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

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

熱門(mén)標(biāo)簽:萬(wàn)利達(dá)綜合醫(yī)院地圖標(biāo)注點(diǎn) 股票配資電銷(xiāo)機(jī)器人 實(shí)體店地圖標(biāo)注怎么標(biāo) 地圖標(biāo)注如何弄全套標(biāo) 電銷(xiāo)機(jī)器人 深圳 南京電銷(xiāo)外呼系統(tǒng)哪家好 外呼系統(tǒng)會(huì)封嗎 武漢AI電銷(xiāo)機(jī)器人 在電子版地圖標(biāo)注要收費(fèi)嗎

os.cmd(Cmd)

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

erlang:open_port(PortName, PortSettings)

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

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

當(dāng)對(duì)本身系統(tǒng)的性能要求比較高的時(shí)候,不建議使用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)簽:泰安 武威 濟(jì)源 安徽 廣東 濟(jì)寧 汕頭 臺(tái)州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Erlang中執(zhí)行l(wèi)inux命令的兩種方法》,本文關(guān)鍵詞  Erlang,中,執(zhí)行,linux,命令,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Erlang中執(zhí)行l(wèi)inux命令的兩種方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Erlang中執(zhí)行l(wèi)inux命令的兩種方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    明溪县| 黔西县| 南华县| 武清区| 和平区| 霍州市| 外汇| 亚东县| 丹江口市| 沂水县| 兴安盟| 元朗区| 无为县| 乡宁县| 平邑县| 泽库县| 闽侯县| 雷山县| 河津市| 梅州市| 三都| 黄浦区| 鹿泉市| 清苑县| 泊头市| 体育| 宝兴县| 安义县| 阜城县| 杭锦后旗| 乌兰浩特市| 合山市| 确山县| 麻城市| 阿巴嘎旗| 原平市| 梨树县| 舞钢市| 绥德县| 巨野县| 台南市|