ユーザーから入力を取得し、それを(親プロセスの)パイプに入れてから、子プロセスで文字列を処理する必要があります。大文字はすべて小文字にする必要があり、小文字はすべて大文字にする必要があります。私の問題は、パイプの出力にあります。私のコードは、文字列の最初の文字の大文字と小文字のみを変更しますが、その理由はわかりません。子パイプはすべての文字を読み取っています (少なくともそうであるように見えます)。これが各文字を処理しない理由を誰かが教えてくれることを望んでいました。
while (read(pfd[0], &buf, strlen(cmd)) > 0){
if(buf >= 'a' && buf <= 'z'){
buf = toupper(buf);
}
else{
buf = tolower(buf);
}
}
write(STDOUT_FILENO, &buf, strlen(cmd));