我有一个子进程调用从标准输入和输出到标准输出的单词的 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 命令。尽管如此,任何提示将不胜感激。谢谢]