Lua io.popen()

作者: AlbertS | 来源:发表于2016-07-29 15:07 被阅读2673次

    前言#

    今天这个函数说起来应该是有两重身份的,首先它是一个和文件相关的函数,另外他又是一个可以执行命令的函数,这一点和之前讲过的函数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()
    
    
    • 运行结果
    io_popen.png

    总结#

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

    相关文章

      网友评论

        本文标题:Lua io.popen()

        本文链接:https://www.haomeiwen.com/subject/qdszjttx.html