Мне нужно получить вход от пользователя, поместить его в трубку (в родительском процессе), тогда мне нужно обработать строку в дочернем элементе. Все прописные буквы должны быть строчными, а все строчные буквы должны быть прописными. Моя проблема связана с выходом трубы. Мой код изменит только буквенный регистр первого символа в строке, и я не уверен, почему. Детская трубка читает все символы (по крайней мере, похоже, это). Я надеялся, что кто-то скажет мне, почему это не обрабатывает каждого персонажа.Обработка прочитанных труб
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));
, что имеет смысл, но ЬиЕ определяется как полукокса BUF; это не массив или указатель. –
также, я просто изменил определение buf как массив, и все это работает отлично. Надеюсь, мне не сказали, что это должен быть единственный символ, а не массив! –
Ну, если вам действительно нужно прочитать в один байт, то то, что вы изначально должны были работать, должно работать. Все, что вам нужно сделать, это изменить его на чтение байта на чтение, а не на strlen (cmd). Но, честно говоря, это немного разумно. – Duck