Open In App

Implementation of ls | wc command

Last Updated : 30 Apr, 2018
Suggest changes
Share
Like Article
Like
Report
ls | wc command : Using ls|wc, we can count new lines, words and letters of all files of current directory. We can see from the following after execution of the code we get same results. Prerequisites :ls command | wc command | piping in linux Approach : First, we have to use pipe for inter process communication over an array where a[0] is used for reading and a[1] is used for writing. We can replicate the process using fork. In the parent process, standard output is closed so that output of ls command will go to a[0] and similarly standard input is closed in children process. Now, if we run the program output will be as same as command of linux ls|wc. Below is the implementation of above approach : C
// C code to implement ls | wc command #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include<errno.h> #include<sys/wait.h> #include <unistd.h> int main(){  // array of 2 size a[0] is for  // reading and a[1] is for  // writing over a pipe   int a[2];  // using pipe for inter  // process communication  pipe(a);  if(!fork())  {  // closing normal stdout  close(1);    // making stdout same as a[1]  dup(a[1]);    // closing reading part of pipe  // we don't need of it at this time  close(a[0]);    // executing ls   execlp("ls","ls",NULL);  }  else  {  // closing normal stdin  close(0);    // making stdin same as a[0]  dup(a[0]);    // closing writing part in parent,  // we don't need of it at this time  close(a[1]);    // executing wc  execlp("wc","wc",NULL);  } } 

Similar Reads

Article Tags :