os.exe是否在lua中阻塞线程?

时间:2014-11-20 12:00:26

标签: nginx lua

在我的nginx + lua app操作系统中执行类似os.execute("ls 2>&1 | tee a.txt")的命令行 我想知道它是否会阻止主应用程序?我想使用命令“执行并忘记”的情况。如果它阻止如何修复它并在后台线程中执行一个简单的行?

2 个答案:

答案 0 :(得分:5)

os.execute()将阻止执行您正在运行的命令的时间,并且因为您生成了一些输出,所以使用io.popen不会帮助您,因为您需要从管道中读取(否则进程仍会在某个时刻阻塞)。

更好的方法是在后台运行该流程os.execute("ls >a.txt 2>&1 &")。重定向>2>的顺序很重要,最后的&会在后台运行命令,取消阻止os.execute

答案 1 :(得分:2)

os.execute()相当于C中的system(),因此它会阻塞该线程。

如果您不想阻止,请改用io.popen