|
|
cc [ flag ... ] file ... -lgen [ library ... ]
#include <libgen.h>
int p2open(const char *cmd, FILE *fp[2]);
int p2close(FILE *fp[2]);
Unsafe
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.
#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);
}
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.
|
|
Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).
Last modified 21/April/97