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

  man pages->IRIX man pages -> popen (3s)              


POPEN(3S)							     POPEN(3S)

NAME    [Toc]    [Back]

     popen, pclose - initiate pipe to/from a process

SYNOPSIS    [Toc]    [Back]

     #include <stdio.h>

     FILE *popen (const	char *command, const char *type);

     int pclose	(FILE *stream);

DESCRIPTION    [Toc]    [Back]

     popen creates a pipe between the calling program and the command to be
     executed.	The arguments to popen are pointers to null-terminated
     strings.  Command consists	of a shell command line.  Type is an I/O mode,
     either r for reading or w for writing.  The value returned	is a stream
     pointer such that one can write to	the standard input of the command, if
     the I/O mode is w,	by writing to the file stream; and one can read	from
     the standard output of the	command, if the	I/O mode is r, by reading from
     the file stream.

     A stream opened by	popen should be	closed by pclose, which	waits for the
     associated	process	to terminate and returns the exit status of the

     Because open files	are shared, a type r command may be used as an input
     filter and	a type w as an output filter.

EXAMPLE    [Toc]    [Back]

     A typical call may	be:

	  #include <stdio.h>
	  #include <stdlib.h>

		  char *cmd = "/usr/bin/ls *.c";
		  char buf[BUFSIZ];
		  FILE *ptr;

		  if ((ptr = popen(cmd,	"r")) != NULL)
			  while	(fgets(buf, BUFSIZ, ptr) != NULL)
				  (void) printf("%s", buf);
		  return 0;

     This will print in	stdout [see stdio (3S)]	all the	file names in the
     current directory that have a ``.c'' suffix.

SEE ALSO    [Toc]    [Back]

     pipe(2), wait(2), fclose(3S), fopen(3S), stdio(3S), system(3S).

									Page 1

POPEN(3S)							     POPEN(3S)

DIAGNOSTICS    [Toc]    [Back]

     popen returns a NULL pointer if files or processes	cannot be created.

     Pclose returns -1 if stream is not	associated with	a ``popened'' command.

WARNING    [Toc]    [Back]

     If	the original and ``popened'' processes concurrently read or write a
     common file, neither should use buffered I/O, because the buffering gets
     all mixed up.  Problems with an output filter may be forestalled by
     careful buffer flushing, e.g. with	fflush [see fclose(3S)].

     Full pathnames should be used (or reset PATH variable) and	the IFS
     environment variable should be set	to space and tab("\t") to avoid
     possible security problems.  It should be noted that these	environment
     variables are inherited from the parent process.

									PPPPaaaaggggeeee 2222
[ Back ]
 Similar pages
Name OS Title
pclose Tru64 Closes a pipe to a process
popen Tru64 Initiates a pipe to a process
tee OpenBSD pipe fitting
tee IRIX pipe fitting
pipe Linux create pipe
tee FreeBSD pipe fitting
tee HP-UX pipe fitting
udbp FreeBSD USB Double Bulk Pipe driver
fifo Linux first-in first-out special file, named pipe
pxfisfifo IRIX Tests for pipe or a FIFO special file
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service