svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
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)