stdin から stdout にパイプされた単語に対して cat コマンドを呼び出す子プロセスがあります。子プロセスがその cat プロセスに置き換えられる前に、関数 removeDups() を呼び出すにはどうすればよいですか?
fyi removeDups() は、パイプされた単語をキャプチャし、重複を削除し、頻度を記録し、単語リストを子プロセスに送り返して、画面に出力するか、画面に直接出力します。コード スニペットを次に示します (疑似コードに似ています)。
int main(int argc,char **argv)
{
//...Child case(from fork() switch above):
case 0:
execl("/bin/cat", "cat", (char *) NULL);
}
char[][] removeDups()
{
char uniqueWords[MAX_WORDS][BUF_SIZE];
char buf[BUF_SIZE];
while (fscanf(stdin, "%s", buf) != EOF)
{
int k;
for (k = 0; k < MAX; ++k)
{
if (strcmp(uniqueWords[k], buf) == 0)
{
found = 1;
frequency[k]++;
}
}
int l;
if (found == 0)
{
strcpy(uniqueWords[l], buf);
++l;
{
}
return uniqueWords;
}
[編集: cat コマンドをまったく使用しない方がよい場合があることに気付きました。それでも、ヒントをいただければ幸いです。どうも]