[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: popen in non-blocking mode
- From: Tim Caswell <tim@...>
- Date: Tue, 6 Dec 2011 18:20:46 -0600
Not sure if it's useful, but my Luvit project has a fully non-blocking
popen with full I/O streams for stdin, stdout, and stderr as well as
events for process exit and/or signal termination. Just don't try to
use luvit as a library to your existing lua program. luvit is it's
own runtime (that embeds luajit) and makes many assumptions.
<https://github.com/luvit/luvit>
On Tue, Dec 6, 2011 at 4:17 PM, Peter Odding <peter@peterodding.com> wrote:
>> We are running an external process using io.popen(). Something like ...
>>
>> ecom = assert(io.popen(cmd, 'r'))
>>
>> Is there a way to setup non-blocking reads with this type of interface?
>> Or do other lua modules offer more control? What we've seen is that our
>> read() command will block if the external process does not have any data
>> to return. We need a strategy to make this non-blocking.
>>
>> Thanks for any suggestions,
>>
>> Joe
>
>
> I don't know whether it's possible or easy to make pipes created by
> io.popen() non-blocking, however my Lua/APR binding [1] supports process
> management and pipes with configurable blocking behaviour (non-blocking,
> blocking and blocking with time out). It works in Windows and UNIX
> environments (and then some).
>
> - Peter
>
> [1] http://peterodding.com/code/lua/apr/
>