[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: io.popen() equivalent in nixio?
- From: Jo-Philipp Wich <xm@...>
- Date: Tue, 14 Feb 2012 00:33:25 +0100
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
I once implemented a popen-ish ltn12 source function on top of nixio, it
reads like this:
- -- >8 --
function ltn12_popen(command)
local fdi, fdo = nixio.pipe()
local pid = nixio.fork()
if pid > 0 then
fdo:close()
local close
return function()
local buffer = fdi:read(2048)
local wpid, stat = nixio.waitpid(pid, "nohang")
if not close and wpid and stat == "exited" then
close = true
end
if buffer and #buffer > 0 then
return buffer
elseif close then
fdi:close()
return nil
end
end
elseif pid == 0 then
nixio.dup(fdo, nixio.stdout)
fdi:close()
fdo:close()
nixio.exec("/bin/sh", "-c", command)
end
end
- -- 8< --
I think you can easily adapt it to return the file descriptor instead of
a reader iterator closure.
~ Jow
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk85ncUACgkQdputYINPTPMgzQCggrx6ad4hQEn1KAisCHY71g08
XuIAoJwgkVGR5IVaNogSvqYZQyXnONWm
=hYmu
-----END PGP SIGNATURE-----