Lua io.popen()

前言#

今天这个函数说起来应该是有两重身份的,首先它是一个和文件相关的函数,另外他又是一个可以执行命令的函数,这一点和之前讲过的函数os.execute()有点相似,接下来我们就一起来看一下这个函数的用法。

内容#


io.popen()##

  • 原型:io.popen ([prog [, mode]])
  • 解释:在额外的进程中启动程序prog,并返回用于prog的文件句柄。通俗的来说就是使用这个函数可以调用一个命令(程序),并且返回一个和这个程序相关的文件描述符,一般是这个被调用函数的输出结果,这个文件打开模式由参数mode确定,有取值"r""w"两种,分别表示以读、写方式打开,默认是以读的方式。

Usage##

  • 首先新建一个文件popentest.lua然后编写以下代码:
-- 打开文件(这个文件保存的是命令dir的结果)
local myfile = io.popen("dir", "r")
if nil == myfile then
    print("open file for dir fail")
end

print("\n======commond dir result:")
-- 读取文件内容
for cnt in myfile:lines() do
    print(cnt)
end

-- 关闭文件
myfile:close()


local secondfile = io.popen("ipconfig")
if nil == secondfile then
    print("open file for ipconfig fail")
end

print("\n======commond ipconfig result:")
-- 读取文件内容
local content = secondfile:read("*a")
print(content)

-- 关闭文件
secondfile:close()

  • 运行结果
Lua io.popen()_第1张图片
io_popen.png

总结#

  • 使用这个函数需要的注意的是这个函数是依赖于操作系统的,也就是说并不是所有的系统都可以返回正确的结果。
  • 读取文件内容之前最好检测一下文件描述符的有效性,尽可能的避免程序出错。
  • 从运行的结果来看,使用这个函数来执行命令,和直接在命令行界面执行命令的结果上一样的,只不过使用函数这种方式的结果保存在文件中。

你可能感兴趣的:(Lua io.popen())