我目前正在研究一個貓程序。我遇到的問題是,每當我執行UNIX命令:如何在unix中解析管道或重定向操作符?
./catpr file1 file2 file3 | grep string
我不知道如何通過指出存在的管道運營商,以紀念解析結束。我目前正在使用系統調用在C中開發這個貓程序,所以我使用argv來跟蹤參數;然而,無論何時我查看數組中對應於'|'的內容,都會出現一些非常奇怪的東西。
我目前正在研究一個貓程序。我遇到的問題是,每當我執行UNIX命令:如何在unix中解析管道或重定向操作符?
./catpr file1 file2 file3 | grep string
我不知道如何通過指出存在的管道運營商,以紀念解析結束。我目前正在使用系統調用在C中開發這個貓程序,所以我使用argv來跟蹤參數;然而,無論何時我查看數組中對應於'|'的內容,都會出現一些非常奇怪的東西。
所以你基本需要的是你需要在三個文件中搜索一個模式。
由於您已指定您正在使用系統調用來執行您可以執行的操作是將字符串作爲程序的輸入參數。只是不要編譯
以下./catpr文件1文件2文件3串
只是裏面的程序給使用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);
}
「_每當我查看數組中對應於'|'的內容時,都會顯示出奇怪的東西。」 - 請顯示代碼。就像'if(strcmp(argv [4],「|」)== 0)'會起作用。 –
管道由外殼解釋。你不必處理它。 – Ryan
您可能正在閱讀數組的末尾。檢查你的'argc'。 –