fixup! gluon-core: implement popen3() in gluon/util.lua
This commit is contained in:
parent
47f835e254
commit
a125242f4c
@ -200,9 +200,10 @@ M.subprocess.PIPE = 1
|
||||
function M.subprocess.popen(path, argt, options)
|
||||
local childfds = {}
|
||||
local parentfds = {}
|
||||
local stdiostreams = {stdin = 0, stdout = 1, stderr = 2}
|
||||
|
||||
for iostream, option in pairs(options) do
|
||||
if option == M.subprocess.PIPE then
|
||||
for iostream in pairs(stdiostreams) do
|
||||
if options[iostream] == M.subprocess.PIPE then
|
||||
local piper, pipew = posix_unistd.pipe()
|
||||
if iostream == "stdin" then
|
||||
childfds[iostream] = piper
|
||||
@ -223,13 +224,13 @@ function M.subprocess.popen(path, argt, options)
|
||||
return nil, errmsg, errnum
|
||||
elseif pid == 0 then
|
||||
local null = -1
|
||||
local stdiostreams = {stdin = 0, stdout = 1, stderr = 2}
|
||||
if M.contains(options, M.subprocess.DEVNULL) then
|
||||
-- only open, if there's anything to discard
|
||||
null = posix_fcntl.open('/dev/null', posix_fcntl.O_RDWR)
|
||||
end
|
||||
|
||||
for iostream, option in pairs(options) do
|
||||
for iostream in pairs(stdiostreams) do
|
||||
local option = options[iostream]
|
||||
if option == M.subprocess.DEVNULL then
|
||||
posix_unistd.dup2(null, stdiostreams[iostream])
|
||||
elseif option == M.subprocess.PIPE then
|
||||
|
Loading…
Reference in New Issue
Block a user