[英]How to parse a pipe or redirection operator in unix?
我目前正在研究猫程序。 我遇到的问题是,每当我执行unix命令时:
./catpr file1 file2 file3 | grep string
我不知道如何指出存在管道运算符来标记解析结束。 我目前正在通过使用系统调用在C语言中开发此cat程序,因此我使用argv来跟踪参数。 但是,每当我查看与“ |”相对应的数组中的内容时,就会发现确实很奇怪。
因此,您基本上需要在三个文件中搜索一个模式。
由于您已指定要使用系统调用执行操作,因此可以将字符串作为程序的输入参数。 只需执行以下编译
./catpr file1 file2 file3字符串
在程序内部,使用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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.