Mega Code Archive

 
Categories / C / Unix
 

Output of one program is input of another program Using Pipes

#include <unistd.h> #include <process.h> /* Pipe the output of program to the input of another. */ int main() { int pipe_fds[2]; int stdin_save, stdout_save; if (pipe(pipe_fds) < 0) return -1; /* Duplicate stdin and stdout so we can restore them later. */ stdin_save = dup(STDIN_FILENO); stdout_save = dup(STDOUT_FILENO); /* Make the write end of the pipe stdout. */ dup2(pipe_fds[1], STDOUT_FILENO); /* Run the program. Its output will be written to the pipe. */ spawnl(P_WAIT, "/dev/env/DJDIR/bin/ls.exe", "ls.exe", NULL); /* Close the write end of the pipe. */ close(pipe_fds[1]); /* Restore stdout. */ dup2(stdout_save, STDOUT_FILENO); /* Make the read end of the pipe stdin. */ dup2(pipe_fds[0], STDIN_FILENO); /* Run another program. Its input will come from the output of the first program. */ spawnl(P_WAIT, "/dev/env/DJDIR/bin/less.exe", "less.exe", "-E", NULL); /* Close the read end of the pipe. */ close(pipe_fds[0]); /* Restore stdin. */ dup2(stdin_save, STDIN_FILENO); return 0; }