Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ p2open(3G) — Amiga System V Release 4 Version 2.03

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fclose(3S)

popen(3S)

setbuf(3S)



p2open(3G)        MISC. REFERENCE MANUAL PAGES         p2open(3G)



NAME
     p2open, p2close - open, close pipes to and from a command

SYNOPSIS
     cc [flag ...] file ...  -lgen [library ...]

     #include <libgen.h>

     int p2open (const char *cmd, FILE *fp[2]);

     int p2close (FILE *fp[2]);

DESCRIPTION
     p2open forks and execs a  shell  running  the  command  line
     pointed  to  by  cmd.   On  return,  fp[0]  points to a FILE
     pointer to write the  command's  standard  input  and  fp[1]
     points to a FILE pointer to read from the command's standard
     output.  In this way the program has control over the  input
     and output of the command.

     The function returns 0 if successful; otherwise  it  returns
     -1.

     p2close is used to  close  the  file  pointers  that  p2open
     opened.   It  waits for the process to terminate and returns
     the process status.  It returns 0 if  successful;  otherwise
     it returns -1.

EXAMPLES
     #include <stdio.h>
     #include <libgen.h>

     main(argc,argv)
     int argc;
     char **argv;
     {
          FILE *fp[2];
          pidt pid;
          char buf[16];
          pid=p2open("/usr/bin/cat", fp);
          if ( pid == 0 ) {
               fprintf(stderr, "p2open failed\n");
               exit(1);
          }
          write(fileno(fp[0]),"This is a test\n", 16);
          if(read(fileno(fp[1]), buf, 16) <=0)
               fprintf(stderr, "p2open failed\n");
          else
               write(1, buf, 16);
          (void)p2close(fp);
     }




                          Last change:                          1





p2open(3G)        MISC. REFERENCE MANUAL PAGES         p2open(3G)



SEE ALSO
     fclose(3S), popen(3S), setbuf(3S).

DIAGNOSTICS
     A  common  problem  is  having  too  few  file  descriptors.
     p2close returns -1 if the two file pointers are not from the
     same p2open.

NOTES
     Buffered writes on fp[0] can make it appear that the command
     is  not  listening.   Judiciously  placed  fflush  calls  or
     unbuffering fp[0] can be a big help; see fclose(3S).

     Many commands use buffered output when connected to a  pipe.
     That, too, can make it appear as if things are not working.

     Usage is not the same as for popen, although it  is  closely
     related.





































                          Last change:                          2



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026