*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> p2open (3g)              
Title
Content
Arch
Section
 

Contents


p2open(3G)							    p2open(3G)


NAME    [Toc]    [Back]

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

SYNOPSIS    [Toc]    [Back]

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

     #include <libgen.h>

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

     int p2close (FILE *fp<b>[2]);

DESCRIPTION    [Toc]    [Back]

     p2open forks and execs a shell running the	command	line pointed to	by
     cmd.  On return, fp<b>[0] points to a	FILE pointer to	write the command's
     standard input and	fp<b>[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    [Toc]    [Back]

     #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 != 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);
     }







									Page 1






p2open(3G)							    p2open(3G)



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

DIAGNOSTICS    [Toc]    [Back]

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

NOTES    [Toc]    [Back]

     Buffered writes on	fp<b>[0] can make it appear that the command is not
     listening.	 Judiciously placed fflush calls or unbuffering	fp<b>[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.


									PPPPaaaaggggeeee 2222
[ Back ]
 Similar pages
Name OS Title
mdClosePort IRIX open and close MDports
fcloseall Linux close all open streams
VOP_OPEN FreeBSD open or close a file
VOP_CLOSE FreeBSD open or close a file
VOP_OPENCLOSE FreeBSD open or close a file
close IRIX Close an open file
ufs_disk_write FreeBSD open and close userland UFS disks
catopen IRIX open/close a message catalogue
catopen Linux open/close a message catalog
ufs_disk_fillout FreeBSD open and close userland UFS disks
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service