免責事項:これは割り当て用です。私は明示的なコードを求めていません。他の人がやったことを真似せずに資料を学ぶことができるように、私は概念を理解する助けを求めているだけです。
私の任務は、テキストファイルからデータを取得し、単語を解析し、アルファベット順に並べ替え、重複を削除して、新しいテキストファイルに出力することです。これは、IPC用のパイプを使用して、3つのプロセスを使用して実行されます。パイプやIPCを扱ったのはこれが初めてなので、少し初心者に出くわした場合は、ご理解ください。
そこで、main関数をinput / parent、sort(child)、output(grandchild)の3つのプロセスにフォークしました。親プロセス内にIOストリームを作成し、それをソートプロシージャにパイプする必要があります。そのパイプを作成し、未使用の端を閉じました(stdin
入力stdout
用、並べ替え用)。
私の問題はこれです:IOバッファからパイプ(stdoutで)にデータを移動する方法がわかりません。fputs
解析された単語リストが一度に1つの単語に渡される、を使用する必要があるように感じstdout
ます。
以下は、入力プロシージャ用にこれまでに作成したものです。ファイルIOは私の強みではないので、エラーが発生した場合はお知らせください。できる限り修正します。ご協力ありがとうございました!
} else { /* This is the input/parent process */
printf("This is the input process\n");
close(input_to_sortFD[0]); /*
* Closes the parent-side read-end of
* the pipe
*/
pipeStream = fdopen(input_to_sortFD[1], "w"); /*
* Buffer that feeds into
* write-end of pipe
*/
ioFileFD = fopen(ioFile, "r");
if (ioFileFD == NULL) {
perror("Fatal error: failed to open requested file");
exit(-1);
}
int i = 0;
while (fscanf(ioFileFD, "%s", wordList) != EOF) {
fputs(wordList[i], stdout);
i++;
}
}