📜  ls 的实现 | wc 命令

📅  最后修改于: 2022-05-13 01:57:05.120000             🧑  作者: Mango

ls 的实现 | wc 命令

ls | wc 命令:使用 ls|wc,我们可以统计当前目录下所有文件的新行、单词和字母。我们可以从下面的代码中看到,在执行代码后我们得到了相同的结果。

先决条件: ls 命令 | wc 命令 | linux中的管道

方法:首先,我们必须使用管道在数组上进行进程间通信,其中 a[0] 用于读取,a[1] 用于写入。我们可以使用 fork 复制该过程。在父进程中,标准输出被关闭,因此 ls 命令的输出将转到 a[0] ,类似地,标准输入在子进程中被关闭。现在,如果我们运行程序输出将与 linux ls|wc 命令相同。

以下是上述方法的实现:

// C code to implement ls | wc command
#include 
#include 
#include 
#include
#include
#include 
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);
    }
}