Lua多并发进程
2012-2-28 10:34:14
收藏:0
阅读:272
评论:4
我想在 Lua 脚本中同时执行多个进程,例如:
os.execute("cmd1")
os.execute("cmd2")
os.execute("cmd3")
其中 cmd1、2 和 3 都是正在运行的进程。当我像上面那样执行时,cmd2 和 3 只有在 cmd1 完成后才会运行。有什么好的建议吗?我应该使用“fork”或其他等效方法吗?
提前感谢。
原文链接 https://stackoverflow.com/questions/9480315
点赞
stackoverflow用户312586
尝试在你的命令末尾简单地添加&符号:
os.execute("cmd1 &")
os.execute("cmd2 &")
os.execute("cmd3 &")
这应该适用于一个操作系统。在Windows上可能有一种方法可以实现相同的效果,但我不知道它是什么。
2012-02-28 13:42:26
stackoverflow用户837856
ExtensionProposal API 中有一个 os.spawn
函数。
您可以按照以下方式使用它:
require"ex"
local proc, err = os.spawn{
command = e.."/bin/aprogr",
args = {
"arg1",
"arg2",
-- 等等
},
env = {
A = 100, -- 我假设它对值进行了字符串化
B = "Hi",
C = "Test",
},
-- 您还可以指定 stdin、stdout 和 stderr
-- 有关更多信息,请参见提案页面
}
if not proc then
error("Failed to aprogrinate! "..tostring(err))
end
-- 如果您想等待进程完成:
local exitcode = proc:wait()
lua-ex-pai 提供了 POSIX 和 Windows 的实现。 它允许同时生成多个进程。
您可以在 LuaForWindows 发行版中找到此实现的预编译二进制文件。
这是您用例的更简洁版本:
require"ex"
local cmd1_out = io.pipe()
local cmd1_proc = assert(os.spawn("cmd", {
stdout = cmd1_out,
}))
local cmd2_out = io.pipe()
local cmd2_proc = assert(os.spawn("cmd", {
stdout = cmd1_out,
}))
-- 使用 cmd1 和 cmd2 执行操作
2012-02-29 01:21:40
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
因为 Lua 是单线程的,所以要同时运行 Lua 就需要为其提供多线程解决方案(不是协程,因为它们是微线程!)例如 lua pthreads。