如何在unix中解析管道或重定向操作符?

时间:2017-04-09 03:50:27

标签: c unix

我目前正在制作猫计划。我遇到的问题是每当我执行unix命令时:

./catpr file1 file2 file3 | grep string

我不知道如何通过指出存在管道运算符来标记解析的结束。我目前正在使用系统调用在C中开发这个cat程序,所以我使用argv来跟踪参数;但是,每当我查看数组中与“|”对应的内容时,就会出现一些非常奇怪的内容。

1 个答案:

答案 0 :(得分:-1)

所以你基本上需要的是你需要在三个文件中搜索一个模式。

由于您已指定使用系统调用来执行您可以执行的操作,因此将字符串作为程序的输入参数。只需执行以下操作即可编译

  

./ catpr file1 file2 file3 string

在程序内部使用grep进行系统调用。我正在为您提供完整的计划。我希望这就是你所需要的。

#include <stdio.h>
#include <string.h>
int main(int a,char *argv[])
{
    char com[256]="";
    strcat(com,"cat ");
    strcat(com,argv[1]);
    strcat(com," ");
    strcat(com,argv[2]);
    strcat(com," ");
    strcat(com,argv[3]);   
    strcat(com," | grep ");
    strcat(com,argv[4]);   //this is your search pattern
    system(com);
}