logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

IV_POPEN_REQUEST_INIT, iv_popen_request_submit, iv_popen_request_close - popen(3) for ivykis applications

Description

iv_popen provides ivykis(3) applications with an asynchronous version of popen(3) that is integrated with
       the ivykis event loop.

       After  initialising a structiv_popen_request object using IV_POPEN_REQUEST_INIT and assigning its ->file
       and ->argv and ->type members, one can call iv_popen_request_submit on it to fork  off  a  child  process
       which  will  call execvp(2) on ->file and ->argv, while in the parent process returning a file descriptor
       that is connected to the child's standard input (if ->type equals "w")  or  standard  output  (if  ->type
       equals "r").

       When the application is done with the child process, it should call iv_popen_request_close, and close the
       file descriptor returned by iv_popen_request_submit (this is not done automatically).

       iv_popen  will  continue  to  monitor  the  child's  process state while it is running, by registering an
       iv_wait(3) interest for its process ID.

       If the child process has not yet terminated when iv_popen_request_close is called, iv_popen will  attempt
       to terminate the child process in the background by sending it a series of SIGTERM and SIGKILL signals.

       iv_popen_request_close  must  be called from the same thread that iv_popen_request_submit was called from
       on this object.

Name

       IV_POPEN_REQUEST_INIT, iv_popen_request_submit, iv_popen_request_close - popen(3) for ivykis applications

See Also

ivykis(3), iv_wait(3), execvp(2), popen(3)

ivykis                                             2010-09-04                                        iv_popen(3)

Synopsis

#include<iv_popen.h>

       struct iv_popen_request {
               char            *file;
               char            **argv;
               char            *type;
       };

       voidIV_POPEN_REQUEST_INIT(structiv_popen_request*this);intiv_popen_request_submit(structiv_popen_request*this);voidiv_popen_request_close(structiv_popen_request*this);

See Also