p2open(3gen) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

p2open(3gen)

p2open(3GEN)       String Pattern-Matching Library Functions      p2open(3GEN)

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
       The p2open() function creates two pipes between the calling program and
       the  command  to be executed. The cmd argument consists of a shell com‐
       mand line. On return, fp[0] points to a FILE pointer to write the  com‐
       mand'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.


       The p2close() function 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.

RETURN VALUES
       A  common  problem  is  having  too few file descriptors. The p2close()
       function returns −1 if the two file pointers  are  not  from  the  same
       p2open().

EXAMPLES
       Example 1 Example of file descriptors.



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

         main(argc,argv)
         int argc;
         char **argv;
         {
              FILE *fp[2];
              pid_t pid;
              char buf[16];

                 pid=p2open("/usr/bin/cat", fp);
                 if ( pid == −1 ) {
                   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);
         }


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ MT-LevelUnsafe


SEE ALSO
       fclose(3C), popen(3C), setbuf(3C), attributes(7)

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(3C).


       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.

Oracle Solaris 11.4               1 Jul 2020                      p2open(3GEN)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3