Я пытаюсь написать свой собственный код для подсчета слов в оболочке bash.
Я сделал обычным способом. Но я хочу использовать вывод трубы, чтобы посчитать слово.
Так, например, первая команда - это cat, и я перенаправляю в файл с именем med.
Теперь я должен использовать функцию «dup2» для подсчета слов в этом файле. Как я могу написать код для моего туалета?
Это код для моей оболочки pgm:
void process( char* cmd[], int arg_count )
{
pid_t pid;
pid = fork();
char path[81];
getcwd(path,81);
strcat(path,"/");
strcat(path,cmd[0]);
if(pid < 0)
{
cout << "Fork Failed" << endl;
exit(-1);
}
else if( pid == 0 )
{
int fd;
fd =open("med", O_RDONLY);
dup2(fd ,0);
execvp( path, cmd );
}
else
{
wait(NULL);
}
}
И мое количество слов:
int main(int argc, char *argv[])
{
char ch;
int count = 0;
ifstream infile(argv[1]);
while(!infile.eof())
{
infile.get(ch);
if(ch == ' ')
{
count++;
}
}
return 0;
}
Я не знаю, как сделать перенаправление ввода
я хочу, чтобы мой код сделал это:
Когда я просто набираю wordcount в моей реализации оболочки, я хочу, чтобы он подсчитывал слова в файле med по умолчанию.
Заранее спасибо