os.execute 块线程在 lua 中



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

os.execute() 将在您正在运行的命令的执行时阻塞,并且由于您生成了一些输出,因此使用 io.popen 对您没有多大帮助,因为您需要从管道中读取(否则进程仍将在某个时候阻塞)。

更好的方法可能是在后台运行该过程os.execute("ls >a.txt 2>&1 &") 。重定向的顺序>2>很重要,最后的&将在后台运行命令,解锁os.execute

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

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

最新更新