home | help
iv_popen(3)		   ivykis programmer's manual		     iv_popen(3)

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

SYNOPSIS
     #include <iv_popen.h>

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

     void IV_POPEN_REQUEST_INIT(struct iv_popen_request *this);
     int iv_popen_request_submit(struct iv_popen_request *this);
     void iv_popen_request_close(struct iv_popen_request *this);

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  struct  iv_popen_request  object using IV_POPEN_RE-
     QUEST_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  back-
     ground 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.

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

ivykis				   2010-09-04			     iv_popen(3)

home | help