Start a process and open a pipe to it
#include <sys/types.h>
#include "rfio_api.h"
FILE *rfio_popen (const char *command, const char *type);
int rfio_pclose (FILE *fs);
rfio_popen starts a process and opens a pipe to it.
command is a pointer to a string specifying the shell command to be executed.
type is a mode indicator for the pipe. One of the characters "r" or "w".
rfio_pclose waits for the forked process to terminate and returns the exit status of the command.
int c; FILE *rf; rf = rfio_popen (command, "r"); if (rf == NULL) { rfio_perror ("rfio_popen"); exit (1); } while ((c = rfio_pread (buf, 1, sizeof(buf), rf)) > 0) { ... } c = rfio_pclose (rf);
This routine returns NULL if the operation failed or a non-NULL pointer to a FILE structure if the operation was successful. If it fails, serrno variable is set appropriately.
ENOMEM
Not enough memory.
EINVAL
The mode provided is invalid.
ECONNRESET
Connection reset by peer
ETIMEDOUT
Connection timed out
ECONNREFUSED
Connection refused
EHOSTUNREACH
No route to host
SENOSHOST
Host unknown.
SENOSSERV
Service unknown.
SEUMSG2LONG
Command string too long.
SECOMERR
Communication error.
LCG Grid Deployment Team