• lua execute io.popen command 命令 V1


    Lua os.executeio.popen(read、write模式)

    可用方式

    命令 过程 命令 结果
    os.execute 执行-等待执行完毕 一次性 无,需外部文件存储
    hr=io.popen(..,'r') 执行-不等待执行完毕 一次性 ——
    hr:readhr:close 等待执行完毕 ——
    hw=io.popen(..,'w') 执行-不等待执行完毕 可追加 ——
    hw:close 等待执行完毕 —— 无,需外部文件存储

    耗时

    popenw < popenr << popenr:close < popenr:read ≈ popenw:close < [popenw+file:read] ≈ [execute+file:read]

    • 单独的io.popen,不论读写,是异步的,很快。
    • 关闭close、popenr:read,等待执行完,外部阻塞过程,时间无意义。
    • 从popenr句柄读(read)比从文件读稍快。

    策略

    • 执行确定的命令:
      尽量拼接命令(command & command_2 & ..),一次性发送命令,避免多次io.popen+close。
      • 无需等待执行完毕,无需结果,则popenw/popenr,延迟close;
      • 无需等待执行完毕,需结果,则popenr>popenw,延迟read+close;
      • 需等待执行完毕,
        • 无需结果,则execute,或popenr/popenw+close
        • 需结果,则popenr-handle:read-close > [execute≈[popenw-close]]-file:read
    • 执行不确定的命令,popenw-write >> 多次popenr/execute。

    相关

    参见"CommandPipe"。

    参考测试

    不完善,略..

  • 相关阅读:
    Tapestry AppModule中的方法
    Tapestry Grid
    Tapestry5之AutoLoading Module
    Tapestry Submits
    Tapestry SubmitLink
    再读Struts2之一:总括
    Java war包取之外的properties文件
    用ORACLE的高级复制实现内外网数据同步【转】
    在Oracle中实现数据库的复制
    解决ORA12560: TNS: 协议适配器错误
  • 原文地址:https://www.cnblogs.com/RobertL/p/16294544.html
Copyright © 2020-2023  润新知