(ответ в основном скопирован из Вызов с открытым окружением )
В API ExtensionProposal есть функция os.spawn
.
Вы можете использовать его следующим образом:
require"ex"
local proc, err = os.spawn{
command = e.."/bin/aprogr",
args = {
"arg1",
"arg2",
-- etc
},
env = {
A = 100, -- I assume it tostrings the value
B = "Hi",
C = "Test",
},
-- you can also specify stdin, stdout, and stderr
-- see the proposal page for more info
}
if not proc then
error("Failed to aprogrinate! "..tostring(err))
end
-- if you want to wait for the process to finish:
local exitcode = proc:wait()
lua-ex-pai предоставляет реализации для POSIX и Windows.Он позволяет запускать несколько параллельных процессов.
Вы можете найти предварительно скомпилированные двоичные файлы этой реализации в комплекте с дистрибутивом LuaForWindows .
Вот более краткая версия вашего использованияcase:
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,
}))
-- perform actions with cmd1 and cmd2