在我的nginx + lua app操作系统中执行类似os.execute("ls 2>&1 | tee a.txt")
的命令行
我想知道它是否会阻止主应用程序?我想使用命令“执行并忘记”的情况。如果它阻止如何修复它并在后台线程中执行一个简单的行?
答案 0 :(得分:5)
os.execute()将阻止执行您正在运行的命令的时间,并且因为您生成了一些输出,所以使用io.popen
不会帮助您,因为您需要从管道中读取(否则进程仍会在某个时刻阻塞)。
更好的方法是在后台运行该流程:os.execute("ls >a.txt 2>&1 &")
。重定向>
和2>
的顺序很重要,最后的&
会在后台运行命令,取消阻止os.execute
。
答案 1 :(得分:2)
os.execute()
相当于C中的system()
,因此它会阻塞该线程。
如果您不想阻止,请改用io.popen
。