lua中执行luci.sys.call、luci.sys.exec、os.execute的区别

相同点:都是调用Linux底层脚本及程序
不同点:
(1)luci.sys.call(command)
脾气捉摸不透,实际使用有些时候没有得到任何状态或数据返回,纯粹被用了一下。
(2)luci.sys.exec(command)
比较可靠,可以返回标准输出,比如value = luci.sys.exec(command)获取执行结果用作参量。
message = luci.sys.exec(command 2>&1)则错误、标准都输出,用作显示执行过程。
(3)os.execute(command)
可以得到命令的运行状态,执行成功则得到 true,失败则得到 false,但不会标准输出 0 或 1。常用作判断。比如

if os.execute('ls "'..file..'" >nul 2>nul') ~= 0 then
    message = '文件不存在'
end
但下面这样使用却是不行的(因为不会标准输出 0 或 1):
value = os.execute('ls "'..file..'" >nul 2>nul') 
if value ~= 0 then
    message = '文件不存在'
end

实际使用发现:当执行过程要耗费很长时间(比如复制一个很大的文件)时,luci.sys.exec会一直到执行结束才返回数据。而os.execute却没有,很快返回(但并不是每个命令都这样,捉摸不透)。luci.sys.call用得少,没留意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值