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);
}
}